C malloc与字符串数组

时间:2015-10-22 21:20:28

标签: c arrays string malloc

我试图通过char**表示这个数组来创建一个字符串数组。但是,我在这一行上遇到了分段错误:

char** values = malloc(count*sizeof(char*)+1); //+1 for terminating NUL

有什么建议吗? countsize_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

1 个答案:

答案 0 :(得分:0)

由于values是一个指针数组,因此您使用的代码存在问题。它应该是:

char** values = malloc((count + 1) * sizeof(char*)); // +1 for terminating NULL

因为终止NULL需要sizeof(char*)个字节(而不是1个字节)。 但是,目前还不清楚这一行是否会导致段错误...可能是因为内存对齐问题(由于您使用的行中错误放置+1而出现)......