gpt4 book ai didi

c - 在 C 中使用自由函数时内存在 block 中损坏

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

<分区>

我已经编写了一个代码来将一些信息写入目录中的每个 xml 文件。为了检查文件是否是 XML,我使用 strncpy 来获取格式。 strncpy 的结果被放入一个 char 指针中。任务完成后,我释放了那个结果指针。但是当我尝试释放它时,我收到错误提示:

fatal: file1.c:1449: block 后内存损坏(0xad41d2,5 字节) 上一个 block :file2.c:137(0xa4d5a2,320 字节) 下一个 block :file1.c:1449(0xbe6ee2,5 字节)

如果我评论 free 语句,我会看到警告并且一切正常。

这是我的代码:

while ((in_file = readdir(FD)))
{
if (!strcmp (in_file->d_name, "."))
continue;
if (!strcmp (in_file->d_name, ".."))
continue;

char *output=(char*)xmalloc(sizeof(char)*5);
/* Open directory entry file for common operation */
strncpy(output, in_file->d_name+strlen(in_file->d_name)-5,5);
output[5]='\0';

/* open only xml files */
if(strcmp(output,"_.xml")==0)
{

entry_file = fopen(in_file->d_name, "a");
if (entry_file == NULL)
{
printf("Error : Failed to open entry file - %s\n", strerror(errno));
fclose(entry_file);

return;
}
fprintf(entry_file,"</component>\n");
fclose(entry_file);
}
// free(output); /* FIXME This line gives me error*/

}

谁能帮我解决这里的问题以及为什么会出现错误?

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