我有以下C代码:
int *a;
size_t size = 2000*sizeof(int);
a = (int *) malloc(size);
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.但如果我有以下内容:
char **b = malloc(2000*sizeof *b);
Run Code Online (Sandbox Code Playgroud)
每个元素b都有不同的长度.
怎么可能b像我一样做同样的事情a; 即以下代码是否正确?
char *c;
size_t size = 2000*sizeof(char *);
c = (char *) malloc(size);
Run Code Online (Sandbox Code Playgroud) 此代码在数组声明期间产生分段错误.我很困惑为什么会这样.我故意选择2000000000作为值,因为它低于2 ^ 31并且可以适合整数变量.
int main()
{
int nums_size = 2000000000;
int nums[nums_size];
int i;
for(i = 0; i < nums_size; i++) {
nums[i] = i;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我的问题与C语言有关。我必须创建一个大约 200 万个元素的大数组,但计算机给出了“分段错误(核心转储)”错误。我简单地说:
int integer_array[2000000];
float float_array[2000000];
Run Code Online (Sandbox Code Playgroud)
我确信这与分配给数组的内存有关,但我无法找出正确的解决方案。