标签:
当指针被撤销时,实际上撤销的不是指针本身,而是指针所指对象,指针仍保存着原先所指向的地址。在撤销指针后,应将指针置为NULL,否则它就会变成悬垂指针。当另一新指针被动态分配时,之前的悬垂指针会自动指向新指针所指对象。
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 int i=3,j=5; 6 int *ip0=new int; 7 *ip0=i; 8 cout<<*ip0<<" and "<<ip0<<endl;//输出3 and 0x0001 9 delete ip0; 10 cout<<*ip0<<" and "<<ip0<<endl;//输出0 and 0x0001,ip0并未被删除,成为悬垂指针 11 int *ip1=new int;//在创建ip1的同时,编译器自动令ip1给ip0赋值 12 *ip1=j; 13 cout<<*ip0<<" and "<<ip0<<endl;//输出5 and 0x0001 14 delete ip1; 15 ip0=NULL;//此时ip0地址真正被置为0 16 ip1=NULL;//此时ip0地址真正被置为0 17 return 0; 18 }
标签:
原文地址:http://www.cnblogs.com/slgnesin/p/4389764.html