От чего зависит максимальный размер массива? - PullRequest
0 голосов
/ 10 ноября 2019

Я знаю, что существует верхний предел размера массива. Я хочу понять, что определяет максимальный размер массива? Может кто-нибудь дать простое подробное объяснение?

1 Ответ

0 голосов
/ 10 ноября 2019

Это зависит от языка, библиотеки, операционной системы.

Для массива в памяти, который большинство языков предлагает по умолчанию, верхний предел - это адресное пространство, предоставленное процессу. Для Windows это 2 или 3 ГБ для 32-разрядных приложений, а для 64-разрядных приложений - меньше 8 ТБ и (физический объем ОЗУ + ограничение размера файла подкачки).

Для пользовательской библиотеки, использующей дискпространство для (очень медленного) доступа к массиву, пределом, вероятно, будет размер самого большого тома хранилища. С дисками RAID и объемом более 10 ТБ это может быть очень большое число.

Когда вы знаете предел памяти для массива, верхний предел количества элементов равен (размер памяти / элемента). Фактический предел часто будет меньше, если элемент маленький, так как для адресации массива могут использоваться 32-разрядные целые числа без знака, которые могут адресовать только элементы размером 4 ГБ.

Это для простых смежных типизированных массивов, предлагаемых такими языками, какC ++. Такие языки, как PHP, где вы можете определить a['hello'] = 'bobcat'; a[12] = 3.14;, больше похожи на карты и могут использовать гораздо больше памяти на элемент, поскольку они хранят значение для индекса

...