【问题标题】:lodePNG Memory Allocation ErrorlodePNG 内存分配错误
【发布时间】:2012-11-27 04:44:09
【问题描述】:

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

分配大小无效:429967295 字节。

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

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

【问题讨论】:

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


    【解决方案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
        }
    ...
    

    【讨论】:

    • 看来我匆忙将图像文件移动到了错误的文件夹以尝试该示例。感谢您帮助我看到“树林中的森林”。
    猜你喜欢
    • 2016-10-29
    • 2023-03-17
    • 2010-12-08
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    相关资源
    最近更新 更多