gpt4 book ai didi

c - 用空格替换制表符 - 内存问题(快速释放无效下一个尺寸)

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

<分区>

我试图将一个带有制表符的字符串传递给一个函数,并让函数替换每个制表符,或者用空格重复制表符。我遇到的问题是关于内存问题。这是我的代码:

void ConvertToOneSpace(char *dst, char *src) {
int i, j, first_tab = 1;

for(i = 0, j = 0; src[i] != '\0'; i++) {
if (src[i] == '\t' && first_tab == 0) continue;
if (src[i] == '\t' && first_tab == 1) {
first_tab = 0;
dst[j] = ' ';
} else {
first_tab = 1;
dst[j] = src[j];
}
j++;
}
dst[j] = '\0';
}

int PrintComment(char *desc) {
char aString[4096];
char *result = NULL;

strcpy(aString, desc);
result = strtok(aString, "\n");
while(result != NULL) {
result_notabs = (char *)malloc(sizeof(char) * strlen(result)));
ConvertToOneSpace(result_notabs, result);
printf("%s\n", result_notabs);
/* Code that operates on result_notabs, splitting it into multiple sub
strings of shorter length. This code was tested working perfectly
before implementing and utilizing ConvertToOneSpace */
free(result_notabs);
}
return 0;
}

我在多个字符串(数百个)上运行 PrintComment(),使用随机打印语句来验证一切是否正常工作。它确实如此,直到出现一个随机字符串(我看不出它有什么特别之处)并且我收到以下错误:

     free(): invalid next size (fast) 

我假设它与内存相关,因为当我对其进行 valgrind(使用 memcheck)时,它运行良好。谁能发现错误?我假设它不在我遗漏的其他代码中(正如评论所说,在实现此代码之前它运行良好)。

谢谢!

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