84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
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变量不应该释放吗?为什么指针还有值?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
变量释放了没错,对应的内存是不会清空的。不要以为释放了就没有了,消失了,内存的数据只有下次被修改才会改变。现在*p是一个野指针,它存储的地址已经不属于c了,所以谁也不能保证*p指向的数据会被后来压栈的数据覆盖。
变量释放了没错,对应的内存是不会清空的。不要以为释放了就没有了,消失了,内存的数据只有下次被修改才会改变。现在*p是一个野指针,它存储的地址已经不属于c了,所以谁也不能保证*p指向的数据会被后来压栈的数据覆盖。