在 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中文网其他相关文章!