gpt4 book ai didi

c - 连接字符串后的 Malloc() 内存损坏错误

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

伙计们,我正在生成一个表示文件路径的字符串,连接一个宏和一个字符串。函数是这样的:

char *userPath(char *username)
{
char *path = (char*)malloc(sizeof(char) * (strlen(MAILBOXES) + strlen(username) + 1));
path[0] = '\0';
strcat(path, MAILBOXES);
strcat(path, "/");
strcat(path, username);
return path;
}

返回的指针引用了正确的字符串,但在调用此函数后,进程抛出一个非常非常糟糕的 * glibc detected ./mmboxd: malloc():内存损坏:0x085310a8 ** 具有相对回溯。我知道这就是问题所在,因为一旦实现它我就开始遇到这个错误,而且因为我使用的唯一 malloc 就在这里。这段代码有什么问题?

最佳答案

考虑到您添加的分隔符和空终止符,+1 应该是 +2。并且您可以省略 sizeof(char),它将始终为 1。

关于c - 连接字符串后的 Malloc() 内存损坏错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5823108/

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