2014-02-08 70 views
0

我試圖構建我的第一個C++應用程序,並試圖瀏覽一個表。但是,調試器顯示此錯誤消息。無效的分配大小:4294967295字節

DWORD *dwWatch = new DWORD[taille]; // <-- The error appears here. 
for (LISTSTR::iterator i = listMe.begin(); i != listMe.end(); ++i, j++) 
    { 
     dwWatch[j] = m_DirWatcher.WatchDirectory(m_strDirectoryToMonitor, dwChangeFilter, pHandler, true, NULL, NULL); 

    } 

我該如何解決這個問題?

+2

據推測'taille'非常大。它如何得到這種方式是不可能的,我們知道。 – chris

+7

在我看來,'taille'是-1,然後將其視爲'unsigned'值,從而變成非常大的數字。 –

+0

也不要忘記在你的循環中初始化'j' – mb84

回答

2

taille的實際值是-1,因爲unsigned int的4294967295和signed int的-1在內存中都是0xffffffff。

因此,請檢查它的值何時更改爲-1。請注意,一些標準函數在失敗時返回-1。

+1

反正在32位2的補碼機上;該標準沒有這樣的保證。 –

相關問題