Это было сделано специально. В mql4 все массивы с динамическим распределением памяти. Поэтому было принято решение не удалять буфер массива при выходе из функции, чтобы избежать излишней фрагментации памяти, так как в большинстве случаев массив каждый раз получает один и тот же размер. Особенно это актуально для массивов строк.
В документации об этом сказано
Замечание: массив, объявленный на локальном уровне в какой-либо функции, у которого был изменен размер, останется неизменным после завершения работы функции. При повторном вызове функции такой массив будет иметь размер, отличный от объявленного.
поставь инициализацию...
ваше в мкл5 там с этим полный бордак в создаваемом массиве может находится разный мусор
когда в мкл4 программам вроде к этому более серьезно подходили
тут хотя бы при создании он пуст =))
Объявляем локальный массив, без распределения памяти под него (делать это будем дальше в функции).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Объявляем локальный массив, без распределения памяти под него (делать это будем дальше в функции). Но уже на следующем тике (при новом входе в функцию), массив у нас уже имеет размер и содержит предыдущие значения.( как-будто объявлен на глобальном уровне)
Локальный массив при выходе из функции, не уничтожается и живет своей жизнью.
Вот код для проверки (эксперт).
Вот лог:
12:27:15 e-test USDCHF,M1: loaded successfully12:27:20 e-test USDCHF,M1: initialized
12:27:22 e-test USDCHF,M1: 0
12:27:26 e-test USDCHF,M1: 3
12:27:26 e-test USDCHF,M1: 1; 3; 6
12:27:40 e-test USDCHF,M1: 3
12:27:40 e-test USDCHF,M1: 1; 3; 6
12:27:41 e-test USDCHF,M1: 3
12:27:41 e-test USDCHF,M1: 1; 3; 6
12:27:43 e-test USDCHF,M1: deinitialized
Это нормально и я чего-то не понимаю или всетаки ошибка?
билд 225