业精于勤,荒于嬉。

C++了解free和delete

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;
}

  

posted @ 2012-09-01 21:27  叶知泉  阅读(3316)  评论(0编辑  收藏  举报