1. 程式人生 > >malloc,free,new,delete的區別。

malloc,free,new,delete的區別。

malloc和free最初應用於C語言中,隨著C++的出現與升級引出了new和delete,當然malloc和free也繼承在了C++中繼續使用。 兩組都開闢記憶體和釋放記憶體的作用,但是兩者作用的方式略有差異。 malloc和free屬於C和C++標準庫的函式,而new和delete是屬於操作符,這是他們屬性上的區別。 malloc和free只是動態分配記憶體 空間和釋放空間,而new和delete除了分配記憶體空間還會呼叫建構函式和解構函式完成物件的初始化和回收記憶體。 malloc和free需要手動計算型別大小且返回值為void*,而new和delete可以自行計算型別大小,而且返回值不需要強制型別轉換。 new是呼叫operator new分配空間呼叫建構函式初始化物件,delete先呼叫解構函式清理物件然後呼叫operator delete釋放空間。 new【N】是呼叫operator new分配空間呼叫N次建構函式初始化物件,delete【N】先呼叫N次解構函式清理物件然後呼叫operator delete釋放空間。