我试图通过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
由于values
是一个指针数组,因此您使用的代码是有问题的。应该是:
char** values = malloc((count + 1) * sizeof(char*)); // +1 for terminating NULL
,因为您需要sizeof(char*)
字节(而不是1
字节)来终止NULL。然而,目前尚不清楚是否是这条线路单独导致了段故障。也许是因为内存对齐问题(由于您正在使用的行中放错位置的+1
而出现)…