c - 指针数组 - 需要更大

标签 c arrays string pointers malloc

如何创建可以存储超过 1,047,141 个指针的指针数组?我使用以下代码计算了这个数字:

int main(int argc, char const *argv[]) {
  long a = 0;
  while(1==1){
    char * str[a];
    printf("%ld is good.\n", a);
    a++;
    //Loop ends on Segmentation fault
  }

  return 0;
}

我正在使用指针数组来存储字符串。有哪些替代方案?

编辑

上面的代码只是找到指针数组的最大大小的一种方法。

一个指针保存一个字符串,所以我可以存储的最大字符串数是 1,047,141。我需要一种方法来存储超过 1,047,141 个字符串。

最佳答案

通过malloc()动态分配数组。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char const *argv[]) {
  long a = 0;
  while(1==1){
    char ** str = malloc(sizeof(char*) * a);
    if (str != NULL){
      printf("%ld is good.\n", a);
      free(str);
    } else {
      break;
    }
    a++;
  }

  return 0;
}

关于c - 指针数组 - 需要更大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38377289/

相关文章:

c - 如何将结构数组的属性作为参数发送给 C 中的函数?

python - 使用 np.zero 创建元组

swift - 无法在 swift ("if"或可能 "while"中创建正确的函数)

c - 如何将字符串数组指针传递给新的字符数组?在C中

c - 如何打印二维字符数组的内容?

除了 C 的标准库中的键盘,您能否从设备获取输入?

连分数自然对数(计算右对数所需的迭代次数)

c++ - 指向指针的指针

c++ - 无法生成调用图 doxygen/graphviz

javascript - 将对象的值分组到新数组中 - JavaScript