读书人

关于局部变量的奇怪有关问题

发布时间: 2012-05-30 20:20:04 作者: rapoo

关于局部变量的奇怪问题?
代码如下,在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;} 

读书人网 >C语言

热点推荐