new和malloc的區別

2021-09-09 04:25:47 字數 883 閱讀 3929

一、new是操作符,而malloc是函式

void* malloc(size_t);

void free(void*);

void *operator new (size_t);

void operator delete (void *);

void *operator new (size_t);

void operator delete (void *);

二、new在呼叫的時候先分配記憶體,在呼叫建構函式,釋放的時候呼叫析構函式。

#include using namespace std;

class player

~player()

void log()

};int main()

輸出結果為:

initiate by new

call player::ctor

i am player

call player::dtor

initiate by malloc

i am player

三、new是型別安全的,malloc返回void*

四、new可以被過載

五、new分配記憶體更直接和安全

六、malloc 可以被realloc

#include using namespace std;

int main()

輸出結果為:

hello

hello,world

七、new發生錯誤丟擲異常,malloc返回null

八、malloc可以分配任意位元組,new 只能分配例項所佔記憶體的整數倍數大小

new和malloc的區別

1 new 是c 中的操作符,malloc是c 中的乙個函式 2 new 不止是分配記憶體,而且會呼叫類的建構函式,同理delete會呼叫類的析構函式,而malloc則只分配記憶體,不會進行初始化類成員的工作,同樣free也不會呼叫析構函式 3 記憶體洩漏對於malloc或者new都可以檢查出來的,...

malloc和new的區別

1,malloc與free是c c語言的標準庫函式,new delete是c 的運算子。它們都可用於申請動態記憶體和釋放記憶體。2,對於非內部資料型別的物件而言,光用maloc free無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件在消亡之前要自動執行析構函式。由於malloc f...

new 和 malloc 的區別

new 和 malloc 的區別 1.malloc與free是c c語言的標準庫函式,new delete是c 的運算子。它們都可用於申請動態記憶體和釋放記憶體。2.對於非內部資料型別的物件而言,光用maloc free無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件在消亡之前要自動...