gpt4 book ai didi

在 C 中创建大型数组

转载 作者:太空宇宙 更新时间:2023-11-03 23:19:55 24 4
gpt4 key购买 nike

我的问题是关于C语言的。我必须创建一个包含大约 200 万个元素的大数组,但计算机给出了“段错误(核心转储)”错误。我只想说:

int integer_array[2000000];
float float_array[2000000];

我确信这与分配给数组的内存有关,但我想不出正确的解决方案。

最佳答案

通常你需要在堆上动态创建这样一个数组。

int *integer_array = (int*)malloc(2000000 * sizeof(int));
float *float_array = (float*)malloc(2000000 * sizeof(float));

数组可能对于堆栈分配来说太大了,例如如果不是全局使用,而是在函数内部使用。

int main () {
int a[200000000]; /* => SEGV */
a[0]=0;
}

最简单的修复方法,将数组移到外面:

int a[200000000];
int main () {
a[0]=0;
}

你也可以声明它是静态的:

int main () {
static int a[200000000];
a[0]=0;
}

请注意,堆栈大小取决于系统。可以用 ulimit 改变它。

关于在 C 中创建大型数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43015080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com