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的地址未变
}