-1
假設有一個由新的位置製作的指針,它的大小是4,如何將它放大而不復制到其他指針並將其刪除?如何擴展放置新指針?
int* ptr = (int*)(::operator new(sizeof(int))); //how to make it bigger than now?
假設有一個由新的位置製作的指針,它的大小是4,如何將它放大而不復制到其他指針並將其刪除?如何擴展放置新指針?
int* ptr = (int*)(::operator new(sizeof(int))); //how to make it bigger than now?
您無法調整由::operator new
分配的內存大小。你唯一能做的就是用::operator delete
刪除它,然後分配新的內存。
PS:關於術語的一些注意事項:
::operator new
沒有放置新。使用語法new(ptr) class(arguments)
調用Placement new,並用於調用構造函數以初始化尚未初始化的內存(例如由::operator new
分配的內存)。 ::operator new
簡稱爲operator new。
指針的大小指的是用於存儲指針本身的字節數(通常在32位平臺上是4個字節,在64位平臺上是8個字節)。你的意思是分配內存的大小,即指針指向的內存大小。
非常感謝! – LzxHahaha 2014-09-28 14:13:48