lodePNG内存分配错误

时间:2012-12-09 17:07:59

标签: c++ visual-studio memory-management png

我将lodePNG示例文件放入Visual C ++ 2008 Express中的空白项目,以及我制作的7kb PNG文件,但是我在运行时遇到了这个内存分配错误:

  

无效的分配大小:429967295字节。

打破错误&通过堆栈帧回溯,我认为它是由一个null参数传递给std :: vector中的resize函数引起的。这个项目最近更新了(2012年4月),并且有完整的文档记录,因此我可能做错了(或者没有正确的编译选项)。有人请看看我的项目吗?

这是项目文件夹的ZIP文件:http://www.mediafire.com/file/791b9z9ld74n3eu/TestLodePNG.zip

1 个答案:

答案 0 :(得分:1)

您很可能将png文件放在错误的位置。默认情况下,工作目录是项目文件所在的位置,而不是在调试器中运行时解决方案文件所在的位置。当我将文件移动到项目文件目录时,它工作正常。

您可以考虑在文件打开代码中添加一些错误检查,如下所示:

void load_file(std::vector<unsigned char>& buffer, const std::string& filename)
{
  std::ifstream file(filename.c_str(), std::ios::in|std::ios::binary|std::ios::ate);

    if(!file)
    {
        //Do something about the error and don't crash
    }
...