关于局部变量的奇怪问题?
代码如下,在test里面声明了一个数组,大小是3K个,按照常识来说,应该离开test之后就会被释放掉。
但是事实上没有,还依然存在得好好…就是说,这个局部变量的数组离开了它的作用域之后没有被释放
请问是什么原因呢?但是如果数组的SIZE比较小(小于100个),又能够正常被释放,但是不是马上释放,代码下面的getchar就是为了先等一会再查看指针指向的位置是否有数据(不用sleep是因为getchar可以人手控制时间),如果等几秒之后按回车,SIZE<100的话就会被释放,但是如果马上按回车,还是没释放?是什么原因呢?有没有办法确保在离开作用域之后能释放掉内存的方法?
- C/C++ code
#include <stdio.h>#include <stdlib.h>static double *p;void test(){ double a[3000] = {0.375}; p = &a[0]; printf("%f\n",*p);}int main(){ test(); //getchar(); printf("%f\n",*p); return 0;}[解决办法]
变量释放
[解决办法]
- C/C++ code
#include <stdio.h>#include <stdlib.h>static double *p;void test(){ double a[3000] = {0.375}; p = &a[0]; printf("%f\n",*p);}void test2(){ double a[3] = {0.123}; printf("%f\n",&a[0]);}int main(){ test(); //getchar(); printf("%f\n",*p); test2(); printf("%f\n",*p); return 0;}