我使用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