часть кода, который захлебнулся
ZeroMemory(DataArray); ArrayResize(DataArray,0); for(int i=0; i<100; i++) { AddData("num="+i); ... } void AddData(string data) { int CurrentSize = ArraySize(DataArray); ArrayResize(DataArray,CurrentSize+1); DataArray[CurrentSize] = data; }
Или проблемы с неправильной реализацией работы массива?
ОБНОВИЛ пример кода
Или проблемы с неправильной реализацией работы массива?
Когда обнуляешь размер массива, добавь размер резервируемой под массив памяти:
ArrayResize(DataArray,0,100);
В этом случае физическое распределение памяти будет один раз - при выполнении этой строчки. Иначе - у тебя в цикле будет перераспределение памяти на каждой итерации.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
fxsaber, 2018.12.10 13:55
Если в любом MT4/5-советнике в начале прописать такую строку#include <fxsaber\HistoryTicks\ArrayResize.mqh> // https://www.mql5.com/ru/code/20298
то получите подробное уведомление на случай, если произошла ошибка при выполнении ArrayResize или ArrayCopy.
Когда обнуляешь размер массива, добавь размер резервируемой под массив памяти:
В этом случае физическое распределение памяти будет один раз - при выполнении этой строчки. Иначе - у тебя в цикле будет перераспределение памяти на каждой итерации.
Не могу знать изначально, сколько элементов будет заполнено.
В примере 100 = это пример, может быть 1, а может и 200.
Проблему понял, буду исправлять.
Всем спасибо!
Не могу знать изначально, сколько элементов будет заполнено.
В примере 100 = это пример, может быть 1, а может и 200.
Проблему понял, буду исправлять.
Всем спасибо!
Да, НО... При первоначальном выделении памяти под массив будет зарезервирован объём памяти под массив в 100 ячеек + 100 резерва. Т.е. пока i<200 дополнительного перераспределения памяти не будет. А так будет на каждой итерации.
Если i окажется более 200, то будет ещё одно физическое распределение памяти на ещё 100 ячеек. И до 300 опять не будет перераспределения.
Хорошая идея проверки своего кода.
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Перевести на RU и прочитать могу, но не могу понять суть.
Вылезла ошибка и сразу вылетел советник с графика, других ошибок нет
На форуме чёткого ответа не нашёл.