gpt4 book ai didi

c - 大数组在 C 中给出段错误

转载 作者:行者123 更新时间:2023-12-04 20:00:15 25 4
gpt4 key购买 nike

我真的是 C 的新手,所以如果这是一个绝对的初学者问题,我很抱歉,但是当我构建大型数组时出现段错误,我正在做的相关部分是:

unsigned long long ust_limit;
unsigned long long arr_size;

/* ust_limit gets value around here ... */

arr_size = ((ust_limit + 1) / 2) - 1;
unsigned long long numbs[(int)arr_size];

这适用于 ust_limit 的某些值,但当它超过大约 4.000.000 时,就会发生段错误。我想要的是检测可能的段错误并优雅地失败。我怎么知道哪些值会导致段错误。而且,这是平台相关的东西吗?

最佳答案

您很可能会遇到堆栈溢出,因为您在堆栈上创建了一个非常大的数组。为避免这种情况,请动态分配内存:

unsigned long long *numbs = malloc(arr_size * sizeof(unsigned long long));

稍后,当您完成对数组的处理后,再次释放它:

free(numbs);

关于c - 大数组在 C 中给出段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7678844/

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