C语言:跨函数使用内存

来源:互联网 发布:mysql sys refcursor 编辑:程序博客网 时间:2024/05/02 00:36
下面程序中,能够通过调用函数fun,使main函数中的指针变量p指向合法的整型单元的是:A:main(){int *p;fun(p);...}int fun(int *p){int s;p = &s;}B:main(){int *pfun(&p)...}int fun(int **p){int s;*p = &s;}C:main(){int *p;fun(&p);...}int fun(int **q){*q = (int *)malloc(4);}D:main(){int *p;fun(&p);...}int fun(int * p){p = (int *)malloc(sizeof(int))}

干扰答案:B:在fun函数结束后,通过变量s申请的内存会被操作系统回收,最终指针还是没有指向合法的整型变量
正确答案是C::通过malloc动态分配的内存,需要通过free函数手动释放
在java中,是通过垃圾回收机制来处理内存分配和释放问题的,相对这块来说,java比较安全
原创粉丝点击