Какой самый большой размер bool malloc? хранить 15 состояний головоломки - PullRequest
0 голосов
/ 08 ноября 2011

Я использую массив 1D bool для отслеживания уникального номера, поэтому, если номер уже существует, я отмечаю его как 1, в противном случае 0.

самое большое число, которое мне нужно, так как индекс bool7004068093591806976

Итак, когда я malloc это, произошла ошибка, мне интересно, какой самый большой размер я могу malloc для массива bool?

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 голосов
/ 08 ноября 2011

Максимальный объем памяти, который может быть выделен, зависит от системы, но 7004068093591806976 байт составляет 7 эксабайт (это 7 миллионов терабайт).Разделение этого на несколько частей не поможет.Согласно Википедии, это около сорока всех хранилищ данных в мире.

Если бы вы могли получить доступ к этому хранилищу по одному байту в микросекунду, для его доступа потребовалось бы 222 000 лет..

Вам нужно будет найти другой алгоритм.

...