2014-09-28 62 views
-1

假设有一个由新的位置制作的指针,它的大小是4,如何将它放大而不复制到其他指针并将其删除?如何扩展放置新指针?

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

回答

3

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

PS:关于术语的一些注意事项:

::operator new没有放置新。使用语法new(ptr) class(arguments)调用Placement new,并用于调用构造函数以初始化尚未初始化的内存(例如由::operator new分配的内存)。 ::operator new简称为operator new。

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

+0

非常感谢! – LzxHahaha 2014-09-28 14:13:48