我正在实现一个顺序程序,用于像快速排序一样进行排序。我想在一个包含 1 或 100 亿个整数的庞大数组中测试我的程序的性能。 但问题是由于数组的大小,我得到了一个段错误。
声明该数组的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 1000000000
int main(int argc, char **argv)
{
int list[N], i;
srand(time(NULL));
for(i=0; i<N; i++)
list[i] = rand()%1000;
return 0;
}
我得到了使用 mmap 函数的建议。但是不知道怎么用?谁能帮我使用它?
我正在使用 Ubuntu 10.04 64 位,gcc 版本 4.4.3。
感谢您的回复。
最佳答案
Michael 是对的,你不能在堆栈中放那么多。但是,如果您不想对其进行 malloc,则可以将其设为全局(或静态)。
#include <stdlib.h>
#include <time.h>
#define N 1000000000
static int list[N];
int main(int argc, char **argv)
{
size_t i;
srand(time(NULL));
for(i=0; i<N; i++)
list[i] = rand()%1000;
return 0;
}
关于c - 如何在 C 中声明和使用包含 10 亿个整数的巨大数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3771154/