小记:其他函数中堆/栈分配的内存在本函数中不可用---错误举例时间:2022-03-15 02:22:21 <span id="_xhe_cursor"></span><span id="_xhe_temp" width="0" height="0" />#include <iostream>using namespace std;void test( int* ptr ) { int* tempptr=new int; *tempptr=15; ptr=tempptr; return; }int main( ) { int* ptr; test( ptr ); cout<<*ptr<<endl; return 0; }GCC4.6.0编译:test.cpp:14:20: warning: ‘ptr’ is used uninitialized in this function [-Wuninitialized]运行:Segmentation fault (core dumped)~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#include <iostream>using namespace std;void test( int* ptr ) { ptr=new int; *ptr=15; return; }int main( ) { int* ptr; test( ptr ); cout<<*ptr<<endl; return 0; }GCC4.6.0编译:test.cpp:14:20: warning: ‘ptr’ is used uninitialized in this function [-Wuninitialized]运行:Segmentation fault (core dumped)上面的两个例子说明,在其他函数中分配的不论是堆还是栈中的空间,在另一个函数中是不可见的。对每一次函数的调用,称作“活动记录”,系统都会为其分配不同的内存空间,彼此之间不存在关系。 多谢楼下两位的纠正,确实是我的问题,要想修改一个指针的指向应该传递二维指针。