new/delete 和 malloc/free 區別總結

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 在建立動態對象的同時完成了初始化工做。數據類型

相關文章
相關標籤/搜索