2011-11-08 62 views
0

我使用一維數組布爾跟蹤的唯一編號, 所以,如果數量已經存在,我將其標記爲1,否則爲0什麼是最大的布爾malloc大小?店內15拼圖指出

我需要爲布爾數量最多索引是7004068093591806976

所以,當我malloc它,錯誤發生,我不知道什麼是我可以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難題狀態,以防止重複的狀態。

回答

0

可以分配的最大內存量取決於系統,但是7004068093591806976字節是7 exabytes(即700萬terabyte)。將它分成多個塊不會有幫助。根據維基百科的說法,這大約是世界上數據存儲的第四十個全部

如果您可以每微秒一個字節訪問此存儲,則需要22.2萬年才能訪問所有內容。

你必須找到另一種算法。

+0

該類型是布爾型的,所以我認爲每個元素只需要1位而不是1個字節? – weeo

+0

那麼C++中的每個數據類型至少需要一個字節。即使你使用了一個位矢量,你仍然看着接近一個exabyte。如果你有這麼多的記憶,請讓我知道你在哪裏買的! – Max

相關問題