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以便对它进行标记化吗?
答案 0 :(得分:5)
是的它有效,free并不关心null终止的位置。或者即使有一个。您可以将malloc / free用于任何类型的数据,而不仅仅是空终止字符串。
答案 1 :(得分:3)
免费不检查数据的内容。所以是的,这是正确的