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

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM