当我不知道我将有多少个单词以及单词的最大长度是多少时,我很好奇如何为 char** 分配内存。 我需要将字符串(作为 char* 得到)划分为多个标记(单词),并将单独的单词保存在 char** 中。 我知道我可以为 *char 分配大小为 (string length+1) ,对于每个 char[i] 我也可以分配 (string length + 1) <- 如果我们将整个刺痛作为一个 token 或者我们有字符串中的每个字符作为一个单独的单词。 所以我认为代码是:
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));
正确吗? 如果效率更高的话可以吗?
最佳答案
您可以通过仅运行一次 strlen()
并保存该变量来加快速度。您分配的资金也超出了您的需要。首先找出您有多少个单词,并据此分配 char **words
,然后为每个 words[i]
只为每个单词分配足够的空间。
关于c - 当我们不知道确切的单词数和单词长度时,如何以最有效的方式为 char** 分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25690883/