我试图通过用 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
错位而引起)。 .
关于C malloc 与字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33290966/