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

标签 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;
}

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

最佳答案

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

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

相关文章:

c - 在虚拟机中实现切换到新线程的上下文

c++ - 在作用域生存期之前调用C++析构函数

c - 重新分配和释放

c - 使用 Xcode 运行 .sh 文件,我使用终端并且一切正常,不知道如何使用 Xcode 执行此操作

python - 如何从 csv 文件自动获取标题

java - 替换java字符串中的正则表达式

javascript - 在视觉上打乱字符串,同时保持其同样有效

iphone - 当我的应用收到内存警告时该怎么办?

node.js - nodejs 减少 v8 垃圾收集器的内存使用量

c - 快速服务器端图像生成库?