【发布时间】:2019-10-05 15:44:55
【问题描述】:
int main(int argc , int *argv[]){
char str[7] = "Mobile";
char str2[11] = "Samsung4g";
char *str3 = 0;
str3 = ( char* )(malloc(30));
str3 = "Carrier";
strcat(str3, str);//Problem facing here, dunno why
【问题讨论】:
-
str3 = "Carrier";- 刚刚泄露了在该行之前分配的内存。这不是您在 C 中 复制 字符串的方式。 -
str3 = "Carrier";->strcpy(str3, "Carrier"). -
str3 = "Carrier";只是用str3 = ( char* )(malloc(30));覆盖了存储的地址,将地址替换为String-Literal"Carrier"的地址,导致str3现在指向不可变的字符串文字和内存泄漏,因为您现在无法free()分配的内存(您丢失了指针) 无需强制转换malloc的返回,这是不必要的。见:Do I cast the result of malloc? -
发布特定问题可以提高帖子的质量。像这样的帖子,毫无疑问会吸引反对票和关闭。 user1421147,考虑修改。