C++了解free和delete
(转自:http://www.cnblogs.com/mrye/archive/2012/09/01/2667079.html)
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;} |
浙公网安备 33010602011771号