include <iostream>
using namespace std;
void test(int **p){
int c = 10;
*p = &c;
}
int main(){
int a = 5;
int *p = &a;
test(&p);
cout << *p << endl;
return 0;
}
函数结束c变量不应该释放吗?为什么指针还有值?
三叔2016-11-08 12:47:06
变量释放了没错,对应的内存是不会清空的。不要以为释放了就没有了,消失了,内存的数据只有下次被修改才会改变。现在*p是一个野指针,它存储的地址已经不属于c了,所以谁也不能保证*p指向的数据会被后来压栈的数据覆盖。