2016-10-04 73 views
0

我正在製作一款shoot'em遊戲,並且已經進入一個問題,在一段時間和連續拍攝後,這些精靈將無法加載。在我的控制檯,一個錯誤打印出:C++/SDL2 IMG_Load錯誤(內存不足)

「IMG_LOAD_ERROR:內存不足」(簡稱「IMG_LOAD_ERROR:」是我自己的事)

我也用文本(SDL_ttf)顯示的彈藥數量。

我現在的假設是,我總是在生成的每個敵人的構造函數中調用IMG_load函數,但我甚至不確定是否這是造成它的原因。我能想到的還有更多的可能性。

此外,當它們被破壞時(當敵人身體不健康或離開屏幕時),我釋放它們的紋理。

有人可以幫助我理解這一點並幫助我解決它嗎?

+1

我很驚訝你承認你沒有提供代碼,但仍然不提供代碼。你是否意識到我們要求你的代碼找出它有什麼問題? – sokkyoku

+0

它發生在同一張單獨的圖像上還是在程序運行後的某個時間發生?如果後者,你可能沒有釋放你之前分配的內存(請參閱@Novros答案)。如果valgrind可以在你的操作系統上運行,那麼找到這種錯誤可能是最簡單的工具。如果沒有 - 專門設計用於查找泄漏的備選方案,但它們可能不像valgrind那樣冗長和直接。看到源代碼會很好,但如果你知道並且仍然沒有發佈代碼 - 我懷疑這個問題可能太大了。 – keltar

回答

1

看來你並沒有破壞你不需要的紋理/圖像或渲染。

SDL_DestroyTexture(img); SDL_DestroyRenderer(renderer);

繪製圖像的簡單示例,我找到了https://gist.github.com/armornick/3434362

我的建議:您應該加載所有紋理或開始應用程序或需要時,但它必須是一次。您必須重複使用每個相同的圖像

很高興看到代碼來找出代碼出了什麼問題。

+0

對不起,我忘記提及我在釋放敵人的析構函數中釋放內存。* facepalm *對不起:|。 – NJSADFNSDFNSFDN