黑马程序员技术交流社区
标题: 指针返回 [打印本页]
作者: 丁远帅 时间: 2015-6-10 08:39
标题: 指针返回
int *getA(){
int a=1;
return &a;
}
int *getB(){
int a=malloc(sizeof(int));
Return &a;//success
}
int *getC(){
static int b=2;
return &b;//success
}
在主函数中调用的时候,为什么第一个没法编译通过,第二三个就行呢?
作者: 13673696542 时间: 2015-6-10 13:24
第一个函数调用完变量就销毁了,你返回的地址就是被系统回收后的地址,这个地址可能已被其他程序使用。
第二个函数采用malloc申请的内存需要手动释放,如果没有手动释放内存就一直存在,所以返回地址可行。但这种情况只申请不释放多的话会造成内在泄漏。
第三个用static修饰的变量会增加生命周期,函数调用完变量还会存在,所以返回地址可行。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |