0

lodePNGサンプル ファイルを Visual C++ 2008 Express の空白のプロジェクトに、作成した 7kb の PNG ファイルと共に入れましたが、実行時に次のメモリ割り当てエラーが発生します。

無効な割り当てサイズ: 429967295 バイト。

エラーが発生し、スタック フレームをバックトラックした後、std::vector のサイズ変更関数に null 引数が渡されたことが原因であると考えられます。このプロジェクトは最近 (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 に答える