假设有一个指针是由贴片新建的,它的大小是4,如何在没有复制到另一个指针的情况下将其变大并删除它?
int* ptr = (int*)(::operator new(sizeof(int))); //how to make it bigger than now?
答案 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个字节)。你的意思是分配内存的大小,即指针指向的内存大小。