为什么以下工作不会引发某种分段错误?
char *path = "/usr/bin/";
char *random = "012";
// path + random + \0
// so its malloc(13), but I get 16 bytes due to memory alignment (im on 32bit)
newPath = (char *) malloc(strlen(path) + strlen(random) + 1);
strcat(newPath, path);
strcat(newPath, "random");
// newPath is now: "/usr/bin/012\0" which makes 13 characters.
但是,如果我添加
strcat(newPath, "RANDOMBUNNIES");
这个调用不应该失败,因为 strcat 使用的内存比分配的多吗?因此,不应该
free(newPath)
也失败了,因为它试图释放 16 个字节,但我使用了 26 个字节(“/usr/bin/012RANDOMBUNNIES\0”)?
非常感谢您!