什么是最大的bool malloc尺寸?存储15个谜题状态

时间:2011-11-08 11:48:45

标签: size malloc

我正在使用1D bool数组来跟踪唯一编号, 因此,如果该数字已经存在,我将其标记为1,否则为0。

我需要的最大数字为bool指数为7004068093591806976

所以当我对它进行malloc时,发生了错误,我想知道对于bool数组我可以使用malloc的最大尺寸是什么?

bool *closelist = (bool*)malloc(7004068093591806976*sizeof(bool));

错误消息:

malloc: *** mmap(size=1004068093591810048) failed (error code=12)
*** error: can't allocate region
*** set a breakpoint in malloc_error_break to debug

所以我需要最大的尺寸来将这个数组分成一些子集。或者更好的主意?

要记住15种谜题状态以防止重复状态。

1 个答案:

答案 0 :(得分:0)

可分配的最大内存量取决于系统,但7004068093591806976字节为7 exabytes (即700万TB)。将其划分为多个块并不会有所帮助。根据维基百科的说法,这是全世界所有数据存储的四十分之一。

如果您可以每微秒一个字节访问此存储,则需要222,000年才能访问所有存储。

你必须找到另一种算法。