簡體   English   中英

bad_alloc詳細?

[英]bad_alloc in detail?

我從事游戲項目。 最近,我們遇到了一個問題,當我們加載/卸載不同的場景大約3次時,會捕獲到一個“ bad_alloc”異常。

每次加載場景時,我們首先將壓縮的.zip文件夾加載到內存中,然后從中提取游戲對象。 由於我們沒有任何內存探查器工具,因此我僅使用Process Explorer的性能圖來查看發生了什么:

  1. 運行游戲==>〜620 MB
  2. 加載第一個場景==>〜1.1 GB
  3. 卸載==>〜620 MB
  4. 加載第二個場景==>〜1.1 GB
  5. 卸載==>〜620 MB
  6. 加載第三個場景==> bad_alloc

我追溯到每個負載的新運算符。 壓縮文件夾的加載本身需要100〜120 MB的內存,並且在第3次加載時會從bad_alloc拋出該內存。

我們的平台安裝了2GB物理內存。 卸載場景后,我們似乎沒有留下任何東西。 每個壓縮文件夾的大小大約相同。 但是,第3次加載的新運算符不起作用。

我想知道這個bad_alloc的可能含義是什么? 記不清? 還是根本無法分配所需大小的連續塊? 如果確實有幾種可能性,我該如何確定呢?

感謝您的幫助,謝謝!

如果您一次分配所有內存(僅一個new ),則可能是堆太零散了,無法找到足夠的連續內存來分配您所請求的內容。

可以通過按部分分配新場景來解決。

當分配無法完成時, bad_allocnew拋出。 可能您的內存已耗盡。 通常,自定義內存管理器在無法滿足他們的請求時也會拋出bad_alloc ,但是您說您沒有使用任何內存。 在調試器中運行代碼以查看異常的來源。

順便說一下,那是很多內存。 大多數專業游戲都需要您完成一半或四分之一的工作; 研究減少內存使用的方法。 需要注意的另一件事是內存泄漏。 如果您從不釋放內存,最終將用完。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM