【发布时间】:2009-09-25 14:33:36
【问题描述】:
char *str = malloc (14);
sprintf(str, "%s", "one|two|three");
char *token1, *token2, *token3;
char *start = str;
token1 = str;
char *end = strchr (str, '|');
str = end + 1;
end = '\0';
token2 = str;
end = strchr (str, '|');
str = end + 1;
end = '\0';
...
free(start);
因为我一直在将 str 中的字节设置为 null 以便对其进行标记,所以 free 是否可以正常工作?
【问题讨论】:
-
最好对 malloc 和 free 使用相同的变量名。在这种情况下,对 malloc 使用“start”,然后将“str”分配给“start”的值。