如何在C中保存大量数字的文件

时间:2014-01-15 14:23:58

标签: c random save long-integer shuffle

所以问题如下:)。我需要以随机顺序(洗牌)将大量(大约5,000,000)量的唯一数字保存到文件中。 我写的程序只适用于ca. 1,000,000。它首先创建一个有序元素数组,然后将它们混洗并将每个数字保存在文件的新行中。但是,当我试图增加数字量“分段故障”出现。我认为这是因为我想在一开始就在内存中为这个数组分配这么多空间。

那么有更好的(有效的?)方法来保存这些数字吗?它可以直接保存到文件中。 我需要所有这些数字来在C

中进行一些数据比较

1 个答案:

答案 0 :(得分:1)

分配内存有三种不同的方式:

静态分配:

int data[5000000];    /* allocate outside functions */

static int data[5000000];    /* anywhere */

在程序启动时设置内存。

在堆上:

int *data = malloc(5000000*sizeof int);    

调用malloc时设置内存。如果堆中没有足够的可用空间,程序将从操作系统请求更多内存。

在筹码上:

int data[5000000];    /* allocate inside function */

将从堆栈中分配内存。如果堆栈上没有足够的空间,程序将失败。

静态分配和堆分配通常可以处理大型数组,而堆栈分配则更有限。