我想创建一个称为参数的字符串数组,该数组从称为单词的字符串数组中复制条目(从words [1]到末尾)。我在使用malloc时遇到了麻烦,并且我不太了解应该分配多少。 首先,我将要存储的所有字符加起来。单词中的最后一个条目始终为NULL。
words = ["jargon","hello","world",NULL];
int sum = 0;
for(int i = 1; words[i] != NULL; i++) {
sum += strlen(words[i]);
}
因此,我在数组中将有和字符,称为自变量。所以现在我分配并复制所需的条目。
char **arguments = malloc(sum * sizeof(char));
for(int i = 0; words[i] != NULL; i++) {
strcpy(arguments[i],words[i+1]);
}
但是,我的内存缓冲区溢出。如果我将其更改为
char **arguments = malloc(sum * sizeof(*arguments));
我克服了内存缓冲区溢出的问题,但是在下一行中在arguments [i]中使用了未初始化的值。谁能阐明正在发生的事情?
编辑:很抱歉样式不好,感谢您的建议。