我做了一個應用程序,它必須在內存中存儲大量數據以提高計算性能。當QList變得太大時,應用程序崩潰
它是頂級對象爲QList<myObject*>
的列表和對象的層次結構。加載數據時,會創建大量new myObject*
實例並將其添加到列表中。內存消耗增加,當涉及〜1.9Gb時,程序崩潰。我的電腦(Vista)擁有4Gb RAM,並且我已經在其他電腦上使用較少的RAM(XP)進行測試,並且在同一時刻崩潰。我可以不使用超過1.9Gb的RAM嗎?
當一個較小的文件被加載和根據「Windows任務管理器」的內存使用情況是(比如說)1.2Gb我可以使用這些數據。但是如果我想加載另一個文件,即使在所有對象上調用delete
並清除列表後,增長率都會從1.2Gb開始增長。爲什麼?
我試圖切換到QVector
並致電squeeze()
,但內存保持不變。我已經閱讀了關於QLists中動態內存分配的其他線程,但是在加載新文件之前是否真的無法重置內存?特別是因爲它在1.9Gb之後崩潰;按順序加載3個小文件,我在那裏。
非常感謝您的任何建議。
你確定刪除對象嗎?檢查你的對象的析構函數。嘗試cppcheck http://sourceforge.net/projects/cppcheck/它可以檢測到一些內存泄漏。 – 2010-07-08 15:04:38