不能分配超过一百万个整数

标签 c

我正在尝试计时和比较排序算法。据我了解:sizeof(int) 是 4 个字节,因此 int array[one million]; 产生 (4) 百万字节,大致为 4,000 kb 或 4m​​b。

那为什么我不能呢?我很确定我还有更多。准确地说是 2gb。

如果这意味着什么,我正在使用 gcc。

最佳答案

堆栈上不能有那么多整数。

尝试在堆上为您的数组分配空间。

int *array = malloc(1000000*sizeof(int));
// if array is not null, then you have an array with 1,000,000 ints.

完成排序算法后,释放数组:

free(array); // frees memory allocated before

关于不能分配超过一百万个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8111589/

相关文章:

c - 在Y86汇编中如何为多个数组分配好空间?

找不到配置文件/etc/startup.mk

循环依赖 - 结构和函数指针相互引用

c - 将数据添加到闪存中的一个段怎么会搞砸程序的计时?

c - "UDP Client For the TIME Service"在转换之前是否需要检查读取数据的长度?

c - 如何在没有 printf 的情况下打印 ULONG_MAX

c - 学习如何在 C 中解析字符串和使用结构

c - 在 #if 语句中使用宏时打印弃用警告

c - 我怎样才能 typedef 一个函数指针,它接受一个自己类型的函数作为参数?

c++ - R CMD SHLIB 'undefined reference' 并且不为 SWIG 生成的 R 包装器生成 .so/.dll