我正在移植一個使用opengl構建的c遊戲,用於移植原因。一切都很順利,直到出於某些原因,遊戲的malloc功能停止工作。函數malloc返回NULL ...但只有10次第一次
我一直在尋找這個答案。我發現的唯一的事情是malloc返回NULL。一個非常簡單的malloc,創建一個簡單的幾個字節的結構。
我做了一些嘗試,我在一個循環內編寫了命令。而我的驚喜是,它在前10次都失敗了,但之後命令奏效了,比賽開始了。之後,該結構已經創建好幾次,沒有問題。
我會說要保持原樣,但我確定後面有問題,並且在其他系統中可能無法正常工作。這就是爲什麼我想問我有什麼樣的問題,爲什麼以及如何避免它。環境不是非常友好,我缺乏調試工具,所以我希望儘可能多的細節。
謝謝。編號: 代碼很簡單。
ObjectBase* newcoin;
newcoin= (ObjectBase*)calloc(1,sizeof(ObjectBase));
而ObjectBase結構非常小。不超過200字節。
硬件是一個基於Windows 7的計算機,具有4 GB或內存。即使這樣,錯誤是:
Visual C++ CRT: Not enough memory to complete call to strerror
它工作正常之前。 更多問題。從磁盤加載文件時遇到同樣的問題。它發生約10到15次,然後正常工作。 問題總是在發生。每次我重新啓動應用程序,它都會崩潰。
請添加一些重要的代碼。那樣我們就無法判斷。 – DonCallisto 2012-03-13 19:49:55
你的環境是什麼(硬件,操作系統,編譯器)?你可以發佈一些代碼嗎?問題是否完全可重現?這是不太可能的,但可能的情況是可用內存的數量實際上正在變化,這取決於還在運行的是什麼。 – 2012-03-13 19:50:55
郵政編碼請 – Dan 2012-03-13 19:52:02