在C 語言中,記憶體分配和刪除在管理動態記憶體中起著至關重要的作用。雖然標準的“new”和“delete”運算符很常用,但“placement new”和“delete”提供了一種專門的方法來分配和刪除記憶體。
所提供的範例程式碼片段引發了有關刪除使用「placement new」分配的記憶體的正確方法的問題。在程式碼中,使用以下行分配記憶體:
void *mem = ::operator new(sizeof(Buffer) + strlen(charString) + 1);
,然後使用「placement new」將「Buffer」物件放置在此記憶體位置:
Buffer* buf = new(mem) Buffer(strlen(charString));
出現的問題是使用以下方式刪除內存:
delete (char*)buf;
還是簡單地:
delete buf;
要正確刪除分配的內存,重要的是要遵守具體指南:
buf->~Buffer();
::operator delete(mem);
正確的釋放:
刪除分配的記憶體的正確方法如下:
buf->~Buffer(); ::operator delete(mem);
透過執行以下步驟,您可以確保正確釋放使用「placement new」分配的內存,避免潛在的記憶體洩漏。
以上是如何正確刪除 C 中透過「placement new」分配的記憶體?的詳細內容。更多資訊請關注PHP中文網其他相關文章!