4,C++程式經常要呼叫C函式,而C程式只能用malloc/free管理動態記憶體new 是個運算子,和什麼"+","-","="...有一樣的地位簡單的說:malloc,free是c的函式,new,delete是c++的運算子此外,new是強制型別的,malloc不是,需要型別轉換當然還有很多不同 new 可以呼叫建構函式在宣告的時候初始化malloc只是分配空間,需要在其他地方初始化而delete不僅會釋放空間,在釋放前會呼叫解構函式而且malloc需要指定分配空間大小, 而new是自動計算的
1,malloc與free是C++/C語言的標準庫函式,new/delete是C++的運算子。它們都可用於申請動態記憶體和釋放記憶體。
2, 對於非內部資料型別的物件而言,光用maloc/free無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件在消亡之前要自動執行解構函式。由於malloc/free是庫函式而不是運算子,不在編譯器控制權限之內,不能夠把執行建構函式和解構函式的任務強加於malloc/free。
3,因此C++語言需要一個能完成動態記憶體分配和初始化工作的運算子new,以一個能完成清理與釋放記憶體工作的運算子delete。注意new/delete不是庫函式。
4,C++程式經常要呼叫C函式,而C程式只能用malloc/free管理動態記憶體new 是個運算子,和什麼"+","-","="...有一樣的地位簡單的說:malloc,free是c的函式,new,delete是c++的運算子此外,new是強制型別的,malloc不是,需要型別轉換當然還有很多不同 new 可以呼叫建構函式在宣告的時候初始化malloc只是分配空間,需要在其他地方初始化而delete不僅會釋放空間,在釋放前會呼叫解構函式而且malloc需要指定分配空間大小, 而new是自動計算的