void MyMethod1() { using namespace std; int a=6; int b=6; int * pa= new int ; int * pb= new int ; *pa=a; pb=pa; cout<< "pa的内容赋值为:" <<a<<endl; delete (pa); //free(pa);//加上这句造成pa不可用, //cout<<"free(pa);之后试试能不能读取pa:"<<pa<<endl;//实验证明会挂掉程序 //cout<<"free(pa);之后试试能不能读取a:"<<a<<endl;//实验证明会挂掉程序 cout<< "pa的内容:" <<*pa<<endl; cout<< "pa的地址:" <<pa<<endl; cout<< "pb的内容:" <<*pb<<endl; cout<< "pb的地址:" <<pb<<endl; *pb=b; cout<< "pb的内容赋值为:" <<b<<endl; cout<<endl; cout<< "pa的内容:" <<*pa<<endl; cout<< "pa的地址:" <<pa<<endl; cout<< "pb的内容:" <<*pb<<endl; cout<< "pb的地址:" <<pb<<endl; Sleep(1000); //蛋疼的我测试下休眠函数 } /* delete 是把一段内存标记为可用(没被占用) free 会释放这段内存(清空) free之后内存不能访问,因为没有内容 delete 之后还能访问,但是不能确定内容 */ int main( int argc, char * argv[]) { MyMethod1(); return 0; } |
C++了解free和delete(转自:http://www.cnblogs.com/mrye/archive/2012/09/01/2667079.html)
原文:http://www.cnblogs.com/yongwangzhiqian/p/3938016.html