2010-07-15 80 views
2

可能重複:
What is the difference between new/delete and malloc/free?Malloc和新運算符分配內存有什麼區別?

我感到困惑,當我創建由下使用新的操作符++的對象。 malloc和new運算符之間必須有區別,這樣才能調整內存塊的大小。如果我想分配一個內存我使用malloc但如果我使用一個新的操作符?

İsn't它分配一個內存?你能解釋一下,當我使用malloc,什麼時候應該使用新的?

X* ptr = new(1,2) X; 

obj = (ObjID *)malloc(sizeof(ObjID)); 

非常感謝。

+0

這是真的,我在那裏找到我的答案,謝謝。 – zibib 2010-07-15 07:16:26

回答

2

new分配內存並且還爲您分配的類型調用類構造函數。

2

new不僅會爲對象分配內存,還會在創建的對象上調用構造函數。 malloc將只分配給你一個給定大小的內存塊,不保證內容。

4

在C++中,您應始終使用new並將其與delete配對。

  • 它調用對象的構造函數。
  • 由於它是一個操作符,它可能會超載。
  • 它引發異常,但有一個特例版本。
  • 有一個「放置新的」,它允許你把你的對象在已分配的內存。
1

malloc爲您提供了剩餘垃圾字節的原始內存。新內部也使用malloc。如果原始內存是你所需要的,使用malloc。

+0

「新內部也使用malloc」。不對。它*可能會使用malloc(通常會),但可以使用其他方式來分配內存。它依賴於實現。 – 2010-07-15 07:25:08

相關問題