мне было интересно, как долго может быть динамический массив, поэтому я попыталсяМаксимальная длина динамического массива в Delphi?
SetLength(dynArray, High(Int64));
Это имеет значение 9,223,372,036,854,775,807, и я полагаю, что было бы наибольшее количество индексов, я мог бы ссылаться в любом случае. Это дало мне a:
ERangeError с сообщением «Ошибка проверки диапазона».
Так что я пробовал:
SetLength(dynArray, MaxInt);
и получил ту же ошибку!
Интересно я мог бы назвать его
SetLength(dynArray, Trunc(Power(2, 32));
Что на самом деле в два раза больше MaxInt!
Я попытался
SetLength(dynArray, Trunc(Power(2, 63) - 1));
Что такое же, как High (Int64), и это тоже не получилось.
Короткие продолженные испытания и ошибки, кто-то знает максимальный размер? Это зависит от размера элементов в массиве?
Я использую Delphi 2009. Это будет отличаться для разных версий (очевидно, когда Commadore выходит оно должно быть больше!)
Вы действительно ожидали, что распределение 9 экзабайт (или более) памяти будет работать? :) – Thorarin
Нет, мне это не понравилось, но мне было любопытно, если я получу память или ошибку диапазона. –
Typo в названии, Jim ;-) –