伙计们,我正在生成一个字符串,它表示文件的路径,连接一个宏和一个字符串。功能是这样的:
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 检测到./mmboxd: malloc(): memory corruption: 0x085310a8 * * with the relative backtrace。我知道问题出在这里,因为我在实现它后就开始遇到这个错误,而且我使用的唯一 malloc 就在这里。这段代码有什么问题?