我正在移植一个使用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