【发布时间】:2021-11-16 18:46:35
【问题描述】:
char* my_strdup(char* param_1){
char *p;
int n = sizeof(param_1);
p = (char*)(malloc(sizeof(char)*n));
int i = 0;
while(i<n){
p[i] = param_1[i];
i++;
}
return p;
}
while 最终没有被破坏 我该如何解决
【问题讨论】:
-
将
sizeof (param_1)更改为strlen(param_1) + 1,这是字符串的实际长度(包括NUL'\0'),而不是char *的大小。作为旁注,请将param_1改为const char *,因为您没有修改它。 -
欢迎来到 SO。
malloc根本不提供任何字符串。它只是返回一个地址。而且您使用了错误的大小进行分配。sizeof param_1只会产生指针的大小,这可能不是您想要的。