Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Поиск на MQL5.community ведется во всех разделах. Попробуй сам!
o_O
Модератор
23314
o_O 2008.04.15 09:12 

Возникли проблемы при работе с массивами. Нигде в справке и на форуме немогу нарыть про этот вопрос.

Задаю обычное описание

bool a[100000000];

Если задать уже на 1 элемент больше, то выдает ошибка на этапе компиляции:

too large array

решил его обхитрить и сделать ресайз

int v = ArrayResize(a, 100000009);
прошло все нормально. хотя при выполнении терминал реально "подвис" на пару секунд и начал бурную деятельность с винчестером


тогда сделал в два раза больше

int v = ArrayResize(a, 200000000);
в терминале выдало ошибку:

ERR_SOME_ARRAY_ERROR 4053 Ошибка массива

и соответсвенно ничего не изменилось


Как я понимаю это ограничение накладывается и на n-мерные массивы (на общее количество элементов)


Использовать метод научного тыка нет времени. Может кто сталкивался с этим вопросом или разработчики объяснят пределы допустимого?


P.S. Что самое интересное в настройках терминала максимальное число баров в истории и в окне задается в 200000000 без каких либо предупреждений!! А как же тогда обращаться к этим элементам??????

Slawa
Модератор
6680
Slawa 2008.04.15 09:20  

Ограничения самые естественные:

1. Произведение всех размерностей не может превышать максимального положительного целого 32-битного числа со знаком, т.е. 2147483647

2. Размер памяти под массив не может быть больше 2-х гигабайтов.

3. Сколько сможет отвести памяти ваша операционная система.

o_O
Модератор
23314
o_O 2008.04.15 09:28  

ок. спасибо. Прийдется тогда думать как-то по другому.


Напишите эти ограничения в F1. А то пол дня может пропасть бес толку.

Вадим
211
Вадим 2011.06.11 08:34  
stringo:

Ограничения самые естественные:

1. Произведение всех размерностей не может превышать максимального положительного целого 32-битного числа со знаком, т.е. 2147483647

2. Размер памяти под массив не может быть больше 2-х гигабайтов.

3. Сколько сможет отвести памяти ваша операционная система.

1. Неверно, т.к. произведение всех размерностей не может превысить 1000000, а не 2^32/2

2. Возможно, не проверял в силу первого ограничения

3. Много

dem1305
8
dem1305 2012.05.14 20:14  
прямо как бейсик на zx-spectrum.нелепые ограничения для нужного языка.меня это тоже тормознуло.пришлось мудрить с памятью.
Andrey Dik
10526
Andrey Dik 2012.05.14 22:23  
dem1305:
прямо как бейсик на zx-spectrum.нелепые ограничения для нужного языка.меня это тоже тормознуло.пришлось мудрить с памятью.
Объявите массив динамическим, а потом ресайзите его на нужную величину - результат не заставит себя ждать. :)
Igor Kim
2767
Igor Kim 2012.05.15 02:23  
sergeev:

P.S. Что самое интересное в настройках терминала максимальное число баров в истории и в окне задается в 200000000 без каких либо предупреждений!! А как же тогда обращаться к этим элементам??????

Массив - окно. Дополнительной переменной задавать смещение окна - массива.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий