我试图通过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
答案 0 :(得分:0)
由于values
是一个指针数组,因此您使用的代码存在问题。它应该是:
char** values = malloc((count + 1) * sizeof(char*)); // +1 for terminating NULL
因为终止NULL需要sizeof(char*)
个字节(而不是1
个字节)。
但是,目前还不清楚这一行是否会导致段错误...可能是因为内存对齐问题(由于您使用的行中错误放置+1
而出现)......