gpt4 book ai didi

c - strcat 之后释放分配的字符串

转载 作者:行者123 更新时间:2023-12-04 09:43:47 25 4
gpt4 key购买 nike

根据Allocate string (char*) in another function我现在有这样的代码:

 void someFunction(char** string, char** argv) {
*string = (char*)malloc(strlen(argv[2]) + 1);
strcpy(*string, argv[2]);
strcat(*string, ".txt"); //works fine without this
}

int main(int argc, char** argv) {
char *string;
char *string2;

someFunction(&string,argv);
printf("%s",string);
free(string); // freezes here due the strcat
}

将 strcat 添加到链接问题的代码中后,当我尝试释放字符串时它会卡住。

最佳答案

您没有为生成的连接字符串分配足够的空间;当您写到末尾时,您会调用未定义的行为(在这种情况下,可能是堆损坏)。更改 malloc 以分配 strlen(argv[2]) + strlen(".txt") + 1,这样您就有足够大的缓冲区来容纳整个字符串。

关于c - strcat 之后释放分配的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36438290/

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