www.gusucode.com > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序 > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序/code/C++例题程序/第6章/s6_10/smain6_10.cpp
//Download by http://www.NewXing.com //文件名:smain6_10.cpp //delete的作用 #include <iostream> using namespace std; //测试函数。 void main() { char *lpszChar = NULL; //声明指针,并初始化为NULL。好习惯要求声明时一定初始化 char *lpszChar2 = new char[16]; //声明指针lpszChar2,并指向16个字节的动态内存 lpszChar = lpszChar2; //让lpszChar也指向动态内存。此时,两指针指向同一片内存 cout << "lpszChar2:" << lpszChar2 << endl; //显示:此时动态内存并未初始化, //内容无意义 cout << "lpszChar: " << lpszChar << endl ; //同上 strcpy(lpszChar2, "hello,China!"); cout << "lpszChar2:" << lpszChar2 << endl; //显示hello,China! cout << "lpszChar: " << lpszChar << endl ; //显示hello,China! delete lpszChar2;// lpszChar2所指的内存被释放,但是lpszChar2所指的地址仍然不变,即指针 //变量的值未改变。为了安全,进行delete运算以后,立即让lpszChar2 = NULL cout << "lpszChar2:" << lpszChar2 << endl; //显示:此时内存已经化被释放,内容无意义 cout << "lpszChar: " << lpszChar << endl ; //显示:此时内存已经化被释放,内容无意义 if(lpszChar2 != NULL) // 没有起到防错作用,lpszChar2指针变量的值还是原来的值 { strcpy(lpszChar2, "hello world。"); // 动态内存被释放后,我们还可以通过原来的指针 //操作这块动态内存。 } cout << "lpszChar2:" << lpszChar2 << endl; //显示hello world cout << "lpszChar: " << lpszChar << endl ; //显示hello world。lpszChar的地址未变 }