我想知道当你有一个单词数组(char **words 甚至 char *words[] 时如何分配内存。
最佳答案
你可以试试这个:
char **words;
words = malloc(sizeof(char)*MAX_WORD_SIZE*MAX_NUM_WORDS);
if (words == 0)
{
printf("ERROR: Out of memory\n");
return 1;
}
.... <use words>
free(words);
其中 MAX_WORD_SIZE 是字符串可能具有的最大长度(减去“\0”终止字符); MAX_NUM_WORDS 是您要管理的最大字数。
上面的代码将分配内存来保存您想要管理的所有单词。
您还可以使用calloc
,它的一大优点是将内存设置为“0”,这在处理字符串时非常有用:
words = (char**)calloc(MAX_NUM_WORDS, sizeof(char)*MAX_WORD_SIZE);
关于c - 为 char **foobar 或 char *foobar[] 分配 malloc,如何进行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7000596/