は、ここに私のコードです:私のコンソールアプリは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;
}
エラーアップを示しています。
誰でもこのエラーについてのアイデアを得ましたか?
デバッガはあなたに何を教えてくれたのですか? Visual Studioでは、デバッガを使用しないという言い訳はありません。 –
そして[this](http://stackoverflow.com/questions/127386/in-visual-studio-c-what-are-the-memory-allocation-representations)はあなたにヒントを与えるかもしれません。エラーメッセージを注意深く読んでください。メッセージ –
どういう意味ですか?私はデバッグ-win32モードで、ステップオーバー "その行"、アプリケーションクラッシュを実行します。どのような情報が必要ですか? – yasuo