连接字符串后,Malloc()内存损坏错误

Dam*_*ati 0 c string memory-management strcat

伙计我正在生成一个字符串,它可以显示文件的路径,连接宏和字符串.功能是这样的:

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;
}
Run Code Online (Sandbox Code Playgroud)

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

小智 9

+1应该是+2,以考虑您添加的分隔符和空终止符.你可以省略sizeof(char),它总是1.