我还是不太明白,到底会发生什么情况:
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/