malloc/free和new/delete的區別

1、對於內部數據類型而言,兩者沒有區別;

2、對於非內部數據類型的對象而言,malloc,free無法滿足動態的對象的要求。對象在創建的時候自動調用構造函數銷燬時自動調用析構函 數. 

3、由於malloc/free是庫函數,所以編譯器不能把執行構造函數和析構 函數的任務強加於malloc/free。new/delete是運算符 。

//malloc,free和new,delete的區別
#include<iostream>
using namespace std;
class Test
{
public:
	Test()
	{
		cout<<"Test()"<<endl;
	}
	~Test()
	{
		cout<<"~Test()"<<endl;
	}
};
//void Funtest()
//{
//	Test *a=new Test;//調用Test
//	delete a;//調用~Test
//}
void Funtest1()
{
	Test* a=(Test*)malloc(sizeof(Test));
	free(a);
}
int main()
{
	Funtest1();
	system("pause");
	return 0;
}

4、new/delete已經覆蓋了malloc/free的內容,爲什麼不淘汰malloc? 答:因爲在C++中要調用C 程序,但是C程序中只能用malloc/free動態管理內存。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章