2017-05-15 6 views
0

は、ここに私のコードです:私のコンソールアプリはgzread()、そのクラッシュを実行したときにzlib .gzファイルを読み込むとgzread関数のエラー?タイトルのような

int decompress_one_file(char *infilename, char *outfilename) 
{ 
    gzFile infile = gzopen(infilename, "rb"); 
    FILE *outfile = fopen(outfilename, "wb"); 
    if (!infile || !outfile) return -1; 

    char buffer[128] = {NULL}; 
    int num_read = 0; 
    num_read = gzread(infile, buffer, sizeof(buffer)); // crash here 
    while (num_read > 0) { 
     fwrite(buffer, 1, num_read, outfile); 
    } 

    gzclose(infile); 
    fclose(outfile); 
    return 0; 
} 

、私はこれはエラーの種類であるかわかりません?。 zlib version: 1.2.11

更新圧縮機能:

int compress_one_file(char *infilename, char *outfilename) 
{ 
    FILE *infile = fopen(infilename, "rb"); 
    gzFile outfile = gzopen(outfilename, "wb"); 
    if (!infile || !outfile) return -1; 

    char inbuffer[128] = {NULL}; 
    int num_read = 0; 
    unsigned long total_read = 0, total_wrote = 0; 
    while ((num_read = fread(inbuffer, 1, sizeof(inbuffer), infile)) > 0) { 
     total_read += num_read; 
     gzwrite(outfile, inbuffer, num_read); 
    } 
    fclose(infile); 
    gzclose(outfile); 
    return 0; 
} 

エラーアップを示しています。

error windows

誰でもこのエラーについてのアイデアを得ましたか?

+0

デバッガはあなたに何を教えてくれたのですか? Visual Studioでは、デバッガを使用しないという言い訳はありません。 –

+0

そして[this](http://stackoverflow.com/questions/127386/in-visual-studio-c-what-are-the-memory-allocation-representations)はあなたにヒントを与えるかもしれません。エラーメッセージを注意深く読んでください。メッセージ –

+0

どういう意味ですか?私はデバッグ-win32モードで、ステップオーバー "その行"、アプリケーションクラッシュを実行します。どのような情報が必要ですか? – yasuo

答えて

0

私はチェックして、私のワークステーションで正常に動作します。ここにgzippedファイルの問題がありますか? クラッシュするファイルを表示できますか?

しかし、あなたは、関数fwriteの無限ループを持っているどのような場合には:

int num_read = 0; 
while ((num_read = gzread(infile, buffer, sizeof(buffer))) > 0) { 
    while (num_read > 0) { 
     num_read -= fwrite(buffer, 1, num_read, outfile); 
    } 
} 
+0

こんにちは、私はちょうどcompress_funcを更新します。大丈夫ですか? – yasuo

+0

最適化またはデバッグオプションを使用してプロジェクトをビルドしていますか? 最適化でビルドした場合、クラッシュの実際の場所は別の場所にある可能性があり、実際の理由はfwrite()またはgzclose()の問題と関連している可能性があります。 ツール "gunzip"で正しく解凍されていないgzipファイルをチェックして生成しました。 – knst

関連する問題