1、new 是c++中的操做符,malloc是c 中的一個函數c++
malloc與free是C++/C語言的標準庫函數(要用到malloc函數,必須包含malloc.h),new/delete是C++的運算符。安全
2、new不只分配內存,並且會調用構造函數。同理,delete會調用析構函數函數
new能夠認爲是malloc加構造函數的執行;delete能夠認爲是free加析構函數的執行。指針
new出來的指針是直接帶類型信息的,而malloc返回的都是void指針。對象
對於非內部數據類型的對象而言,光用maloc/free沒法知足動態對象的要求。內存
3、new可以自動分配空間大小,而malloc必須指定構造函數
這是由於new 內置了sizeof、類型轉換和類型安全檢查功能。對於非內部數據類型的對象而言,new 在建立動態對象的同時完成了初始化工做。數據類型