轉載自:http://www.cppblog.com/Lee/archive/2009/03/09/75990.html
相同點:都可用於申請動態內存和釋放內存
不同點:
(1)操作對象有所不同。
malloc與free是C++/C 語言的標準庫函數,new/delete 是C++的運算符。對於非內部數據類的對象而言,光用maloc/free 無法滿足動態對象的要求。對象在創建的同時要自動執行構造函數, 對象消亡之前要自動執行析構函數。由於malloc/free 是庫函數而不是運算符,不在編譯器控制權限之內,不能夠把執行構造函數和析構函數的任務強加malloc/free。
(2)在用法上也有所不同。
函數malloc 的原型如下:
void * malloc(size_t size);
用malloc 申請一塊長度爲length 的整數類型的內存,程序如下:
int *p = (int *) malloc(sizeof(int) * length);
我們應當把注意力集中在兩個要素上:“類型轉換”和“sizeof”。