new 和 malloc 的差異:new 是類型安全的 C 運算符,用於建立指定類型的對象,傳回指向對象的指標。 malloc 是 C 標準函式庫函數,用於分配未類型的記憶體區塊,傳回指向該記憶體區塊的 void* 指標。 new 會呼叫建構和析構函數,而 malloc 則不會。 new 由 C 運行時管理內存,而 malloc 需要手動管理。
C 中new 和malloc 的差異
在C 中,new 和malloc 都是用於動態記憶體分配的函數。然而,它們之間存在一些關鍵的區別:
- 語法和返回類型:
##是一個C 運算符,用於建立指定類型的新對象,並傳回該對象的指針。
-
malloc 是一個 C 標準函式庫函數,用於分配指定大小的記憶體區塊,並傳回指向該記憶體區塊的 void* 指標。
類型安全性:
#new- 是類型安全性的,因為它會在分配記憶體時檢查類型是否匹配。例如,int* p = new int; 會分配一個整數指針,而
p = malloc(sizeof(int));
則只分配了一塊內存,沒有類型檢查。
-
malloc 不是型別安全的,它只分配內存,由呼叫者負責管理物件的型別。
建構與析構:
#new
會先呼叫物件的建構函數,然後傳回物件的指標。當物件超出作用域後,其析構函數會自動呼叫。
-
malloc 不會呼叫建構子或析構函式。這些功能需要由呼叫者手動管理。
記憶體管理:
#new- 由 C 執行時間處理記憶體管理。它會在後台維護一個內部堆,並負責分配和釋放記憶體。
malloc- 需要手動管理記憶體。呼叫者負責分配、釋放和重分配記憶體。不正確的記憶體管理可能會導致記憶體洩漏或段錯誤。
- 總結:
###new### 是 C 中用於建立新物件的類型安全性運算元。 #########malloc### 是 C 標準函式庫函數,用於分配未類型的原始記憶體。 ######對於動態記憶體分配,###new### 通常是 C 程式中更安全且更可取的選擇。 ######
以上是c++中,new和malloc的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!