伙计们,我正在生成一个表示文件路径的字符串,连接一个宏和一个字符串。函数是这样的:
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/