C malloc 与字符串数组

标签 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

最佳答案

由于 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/

相关文章:

python - 使用 Python 对 URL 进行切片

c++ - 在链表中查找损坏

c - qsort() : Sorting only even numbers of an array

c - “shall be a pointer to the initial element of an array of character type” 在 C99 7.19/C11 7.21 中是什么意思?

arrays - 为什么$ A + $ B和$ A,$ B与测试路径交互不同

java - 将字符串转换为 MAILTO 的 HTML 就绪文本 : URL

c++ - 避免C和C++代码混用的做法或方法

python - 数组 Python 的复杂子集和合并

javascript - 使用组元素而不是点时数据丢失

c++ - 为什么我们不能使用整数指针声明一个数字数组