当我不知道我将拥有多少个单词以及单词的最大长度是多少时,我很好奇如何为 char** 分配内存。我需要在多个标记(单词)上划分字符串(我得到 char*)并将单独的单词保存在 char** 中。我知道我可以将 *char 的大小分配为 (string length+1) 并且对于每个 char[i] 我也可以分配 (string length + 1) <- 如果我们将整个 sting 作为一个令牌或者我们有字符串中的每个字符作为单独的单词。所以我认为代码是:
char **words = malloc((strlen(str)+1) * sizeof(char*));
int i;
for( i=0; i < strlen(str)+1; i++)
words[i] = malloc((strlen(str)+1) * sizeof(char));
这是对的吗?如果效率更高,我可以这样做吗?