gpt4 book ai didi

复制文件,但在 C 中出现错误 double free 或 corruption

转载 作者:太空宇宙 更新时间:2023-11-04 05:41:04 24 4
gpt4 key购买 nike

int main(int argc, char **argv)
{
FILE *fe, *fs;
unsigned char buffer[2048];
int bytesreader;

fe = fopen(argv[1], "rb");

fs = fopen(argv[2], "wb");


while((bytesreader = fread(buffer, 1, 2048, fe)))
fwrite(buffer, 1, bytesreader, fs);

fclose(fe);
fclose(fs);
return 0;
}

我的错误是...

*** glibc detected *** ./doc2: double free or corruption (top): 0x096b7008 ***

对不起,现在是正确的,但我不明白。我的失败在哪里?

最佳答案

您需要检查 fopen() 的返回值是否为 0。

在 0 上调用 fclose() 会导致您看到的错误。

此外,检查 argc 的有效参数范围。

int main(int argc, char **argv)
{
FILE *fe, *fs;
unsigned char buffer[2048];
int bytesreader;

if(argc != 3) {
fprintf(stderr, "usage: %s file1 file2\n", argv[0]);
exit(1);
}

fe = fopen(argv[1], "rb");
if(fe == 0) {
fprintf(stderr, "%s: Failed to open %s for read\n", argv[0], argv[1]);
exit(1);
}

fs = fopen(argv[2], "wb");
if(fs == 0) {
fprintf(stderr, "%s: Failed to open %s for write\n", argv[0], argv[2]);
exit(1);
}


while((bytesreader = fread(buffer, 1, 2048, fe)))
fwrite(buffer, 1, bytesreader, fs);

fclose(fe);
fclose(fs);
return 0;
}

关于复制文件,但在 C 中出现错误 double free 或 corruption,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19213006/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com