Al2*_*2O3 -2 c c++ memory heap stack
使用c:
char ptr[n];
free(ptr);
Run Code Online (Sandbox Code Playgroud)
在我看来:当"char ptr [n];" 使用,分配内存,ptr指向它,free(ptr)应该工作.程序失败了,为什么?(n == 5例如)任何深入分析?
因为你调用free了一个未分配的变量malloc.
这会导致未定义的行为.幸运的是它崩溃了,你可以检测到它,否则它可能会在最尴尬的时候崩溃.
你需要free释放堆分配变量的内存,你拥有的是本地存储上的一个数组(假设它在一个函数中),它在创建它的范围({,})结束时自动解除分配.