c++ - 内存分配和字符数组

标签 c++ c

我还是不太明白,到底会发生什么情况:

int i = 0;
for(i; i <100; i ++)
{
    char some_array[24];
     //...
    strcpy(some_array,"abcdefg");

}

some_array 会充当:

some_array = malloc(24);

在循环的开始和 free(some_array) 在循环结束时?

或者那些变量会在栈中分配,函数结束后销毁?

最佳答案

some_array 对于 block 是局部的,因此它在循环的每次迭代开始时创建,并在循环的每次迭代结束时再次销毁。

对于一个简单的数组,“创建”和“销毁”意义不大。如果(在 C++ 中)您将它替换为(例如)一个在创建和销毁时打印出某些内容的对象,您会看到这些副作用发生了。

关于c++ - 内存分配和字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28130923/

相关文章:

c - 程序无法成功运行?段错误 11、表达式被视为空指针; C

c - Linux 中的 fork() 行为

c - 为什么分配单字节时地址不连续?

相当于tailq的C++

模板中的 C++ Cygwin 数字常量构建错误

c++ - 从 boost python 调用具有可变数量输入参数的 Python 函数

c++ - 为什么这个 typedef 允许我在此模板中使用基类成员函数指针?

c++ - 具有 std::array 和 c 样式数组成员的可变参数模板结构之间的区别

c - 缓冲区溢出的 C 代码问题

c - 查找字符串结尾 : *s++ VS *s then s++