如何扩展一个放置新指针?

时间:2014-09-28 06:11:09

标签: c++ pointers new-operator placement-new

假设有一个指针是由贴片新建的,它的大小是4,如何在没有复制到另一个指针的情况下将其变大并删除它?

int* ptr = (int*)(::operator new(sizeof(int)));   //how to make it bigger than now?

1 个答案:

答案 0 :(得分:3)

您无法调整::operator new分配的内存大小。您唯一能做的就是使用::operator delete删除它,然后分配新内存。

PS:关于术语的一些注释:

::operator new不是新的展示位置。使用语法new(ptr) class(arguments)调用Placement new,并用于调用构造函数来初始化尚未初始化的内存(例如::operator new分配的内存)。 ::operator new简称为operator new。

指针的大小是指用于存储指针本身的字节数(通常在32位平台上为4个字节,在64位平台上为8个字节)。你的意思是分配内存的大小,即指针指向的内存大小。