我有一個程序,CRTDBG報告沒有泄漏,但根據Windows任務管理器佔用更多的內存隨着時間的推移。更糟糕的是,如果有足夠的時間,它將以退出代碼-1崩潰。增加內存使用量而不泄漏?
這是一個將成爲遊戲引擎的程序,現在我正在測試將通過快速加載和卸載關卡來卸載關卡的功能。這似乎有效,否則「最後」級別的實體會碰到當前的實體。當我正常運行程序時,內存不會增加,直到退出才加載一個級別而不卸載。
可能需要注意的是,加載一個關卡涉及從硬盤讀取數據並打開文件。知道我正在使用Chipmunk物理庫,Lua和OpenGL也可能很重要。
這使得這個最棘手的事情是CRTDBG不會轉儲,並且它在main()的末尾返回0。
編輯:另外,使用Visual Studio 2008
指責工具通常不會讓你任何地方。證明它,故意泄漏內存並驗證它是否被報告。如果檢查出來,你需要分析你的程序,找出爲什麼數據持續太久。 –
那麼,在main()的開頭粘貼'new'或者'malloc'。所以這可能是某種自動收集,CRTDBG不工作,或者我沒有正確實施。 – Lucas