0

我将lodePNG示例文件连同我制作的 7kb PNG 文件一起放入 Visual C++ 2008 Express 中的空白项目中,但在运行时出现此内存分配错误:

分配大小无效:429967295 字节。

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

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

4

1 回答 1

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
    }
...
于 2012-12-09T17:16:12.633 回答