我使用MSVC2008,写这样的事情(确切的代码是不同的,但是这仅仅是为了说明问题):MSVC2008 C++放置新的内置类型
void *p = NULL;
int size = 12;
...
...
p = malloc(size * sizeof(int));
if(p != NULL)
{
new ((int *)p) int[size];
}
...
((int*)p)[5] = 3;
,而我得到以下编译错误:
error C2660: function 'operator new' does not take 2 arguments
现在,当我使用我自己的类,并重载了我编写的新贴图时,此功能完美无缺。但是,内置的标准类型不是? 或者我错过了什么?
P.S.我这样做是因为我必须和我知道有其他选择,所以请和我一起裸照。
我编译罚款。尝试编译这个确切的代码,而不是你的原始代码,看看是否仍然出现错误消息。如果没有,你的例子是有缺陷的。 – Downvoter
你是否重载了全局'operator new'函数?然后,您需要为“展示位置”参数添加第二个参数。 –
您是否包含''? –
ameyCU