新運算子與新運算子:深入探討
雖然經常互換使用,但「新運算符」和「新運算符符」具有不同的作用在C記憶體管理。
運算子New
Operator new 是一個從空閒儲存中分配原始記憶體的函數。它是低級的,概念上類似於 malloc()。然而,它通常直接用於自訂容器或特定場景。運算子new 可以明確地呼叫為:
char *x = static_cast<char *>(operator new(100));
此外,運算子new 可以全域重載或為單一類別重載,其簽章為:
void *operator new(size_t);
New Operator
另一方面,new 運算子通常用於在免費儲存體上建立物件。與operator new不同,它不是簡單地分配記憶體;它分配記憶體並呼叫類別構造函數。這會在記憶體中建立一個完全初始化的對象,包括任何嵌入的對像或從基類繼承的對象。
my_class *x = new my_class(0);
主要區別
operator new 和operator new 之間的根本區別new運算子是operator new分配原始內存,而new運算符則不僅分配內存運算符不僅分配內存運算符而且還在該位置初始化物件。 new 運算子依賴 new 運算子進行記憶體分配,但會自動處理物件初始化。
以上是C 中「operator new」和「new」運算子有什麼差別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!