【发布时间】:2015-10-08 21:25:22
【问题描述】:
考虑下面的代码段:
void f() {
int arr[10];
arr = malloc(sizeof(int) * 100);
for (int i = 0 ; i < 100 ; i++) {
printf("%d ", arr[i]);
}
puts("");
free(arr);
}
函数 f 返回时会释放原来的arr[10] 堆栈内存吗? (或者这是堆栈内存泄漏?)
【问题讨论】:
-
你不能给数组类型赋值。
-
如果我没记错的话,我认为这段代码甚至不会编译。你试过了吗?
-
你已经声明了
int arr[10]。如果您使用过int *arr,那么这个问题将是有意义的。 -
你为什么不试着编译它并观察编译器错误呢?并使用正确的原型样式声明器!
-
好点 - 它没有编译。
标签: c memory-management memory-leaks