【发布时间】:2016-01-22 07:38:54
【问题描述】:
我试图通过用char** 表示这个数组来创建一个字符串数组。但是,我在这条线上遇到了分段错误:
char** values = malloc(count*sizeof(char*)+1); //+1 for terminating NUL
有什么建议吗? count 是 size_t 类型的变量。感谢您的所有帮助!
编辑:之前的代码:
size_t count = 0;
char** counter = params;
while(*counter) {
count++;
counter += sizeof(char*);
}
count++; //one space for NULL
char** values = malloc((count + 1) * sizeof(char*)); // +1 for terminating NULL
【问题讨论】:
-
可能是 count * lenghtOfEachString,或者我问你 sizeof(char*) 是多少?
-
稍后我会在数组中的每个
char*处保留空间,但它甚至没有到达那一行。它是一个指向字符的指针数组,因此字符串长度在这一行并不重要,只要这些字符的空间在其他地方保留,它们稍后会保留。 -
但是 C 不能处理这个问题,你可以创建一个指针数组,然后在运行时创建每个空间,否则你必须给出一个 maxlenght
-
这不就是这个吗?我正在尝试创建您所说的这个指针数组,但它给了我一个段错误。
-
count 在运行时的值为 3。我在 Eclipse 中调试它,它说段错误在这一行触发。我正在单步执行代码,因此它应该在执行此行后暂停。