我用一个指针(int *p)指向一个变量(int a[10]);当a的生命周期结束时,a的空间是否会被释放掉。
假如有指针函数,尽管指向的对象(函数内部对象)生命周期已经结束,为什么指针指向的区域没有被释放掉?
如果是C++语言的话,没有垃圾回收的,如果你不释放,它就一直存在。如果没有任何指针指向它,就内存泄漏了。
这个要具体而定,楼主可以举例,我这里仅仅举例说明:
int * GetMemory(int num)
{
return new int[num];
}
由函数调用者释放接受到的返回值。若不释放。则内存泄露
int * GetMemory(int num)
{
int arr[10] = {0};
return arr;
}
错误,
int * GetMemory(int num)
{
int* pTmp = new int[num];
delete pTmp;
return pTmp;
}
野指针;错误
函数指针要看你的是什么对象,它本身就是一个地址,而且函数本身抵制是一直存在的。
你这里问题问的是一个普通指针。a释放了,p就不合法了。不能再访问p指向的空间而已。p是new的话就需要delete释放。
评论区不方便贴图贴代码,这里直接给你附一个博客链接,关于指针有图有真相,你提出的问题的答案都在这里面,并且所举实例很经典,一看就会,如果感觉有帮助就采纳了吧,最近缺金币,http://blog.csdn.net/zhaojinjia/article/details/8770989