2014-09-28 29 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