[英]bad_alloc in detail?
我從事游戲項目。 最近,我們遇到了一個問題,當我們加載/卸載不同的場景大約3次時,會捕獲到一個“ bad_alloc”異常。
每次加載場景時,我們首先將壓縮的.zip文件夾加載到內存中,然后從中提取游戲對象。 由於我們沒有任何內存探查器工具,因此我僅使用Process Explorer的性能圖來查看發生了什么:
我追溯到每個負載的新運算符。 壓縮文件夾的加載本身需要100〜120 MB的內存,並且在第3次加載時會從bad_alloc拋出該內存。
我們的平台安裝了2GB物理內存。 卸載場景后,我們似乎沒有留下任何東西。 每個壓縮文件夾的大小大約相同。 但是,第3次加載的新運算符不起作用。
我想知道這個bad_alloc的可能含義是什么? 記不清? 還是根本無法分配所需大小的連續塊? 如果確實有幾種可能性,我該如何確定呢?
感謝您的幫助,謝謝!
如果您一次分配所有內存(僅一個new
),則可能是堆太零散了,無法找到足夠的連續內存來分配您所請求的內容。
可以通過按部分分配新場景來解決。
當分配無法完成時, bad_alloc
由new
拋出。 可能您的內存已耗盡。 通常,自定義內存管理器在無法滿足他們的請求時也會拋出bad_alloc
,但是您說您沒有使用任何內存。 在調試器中運行代碼以查看異常的來源。
順便說一下,那是很多內存。 大多數專業游戲都需要您完成一半或四分之一的工作; 研究減少內存使用的方法。 需要注意的另一件事是內存泄漏。 如果您從不釋放內存,最終將用完。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.