我将lodePNG示例文件放入Visual C ++ 2008 Express中的空白项目,以及我制作的7kb PNG文件,但是我在运行时遇到了这个内存分配错误:
无效的分配大小:429967295字节。
打破错误&通过堆栈帧回溯,我认为它是由一个null参数传递给std :: vector中的resize函数引起的。这个项目最近更新了(2012年4月),并且有完整的文档记录,因此我可能做错了(或者没有正确的编译选项)。有人请看看我的项目吗?
这是项目文件夹的ZIP文件:http://www.mediafire.com/file/791b9z9ld74n3eu/TestLodePNG.zip
答案 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
}
...