作者:高玉成 | 来源:互联网 | 2023-05-25 10:46
我还是不太明白,情况究竟会发生什么:
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)
结束时?
或者那些变量将在堆栈中分配,并在函数结束后被销毁?
1> Jerry Coffin..:
some_array
块是局部的,因此它在循环的每次迭代开始时创建,并在循环的每次迭代结束时再次销毁.
在简单数组的情况下,"创建"和"破坏"并不意味着什么.如果(在C++中)用(例如)一个在创建和销毁时打印出某些东西的对象替换它,你会发现这些副作用会发生.