【发布时间】:2011-10-02 00:21:38
【问题描述】:
伙计们!出于好奇——下面的代码可能不合法,不是吗?
T *p = ::operator new(sizeof(T)); // allocate memory for a T
new (p) T; // construct a T into the allocated memory
delete p; //delete the object using the standard delete operator
【问题讨论】:
-
几乎与@Fredoverflow 的recent question 完全相同,尽管有足够的差异可能值得讨论。从技术上讲,它是不允许的(因为
::operator new返回void *,所以你需要对分配进行强制转换),但是在固定的情况下,这是一个很好的问题(我不确定它是否像干的那样)正如 DeadMG 的回答所暗示的那样)。 -
有什么意义?如果你想要
T*做new T;!
标签: c++ memory-management new-operator