А зачем вы вместо переиспользования массива его пытаетесь удалить и пересоздать в цикле?
for (int i=0;i<10;i++){ SLine array_signals[]; ... ArrayRemove(array_signals,0,WHOLE_ARRAY);// очистить массив со старыми данными }
Современные менеджеры памяти на управляемых языках не позволяют переиспользовать только что освобожденную память, чтобы избежать "use after free" аттак.
Поэтому не считайте, что работает примитивный malloc/free. Старайтесь максимально переиспользовать ранее выделенные массивы, а не создавать на каждый чих новые массивы.
Я пробовал объявлять,
SLine array_signals[];
как глобальную переменную, но результат такой же. Подумал, может при локальной, должно верно работать.
Большое спасибо за разъяснение!)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Приветствую всех!
Столкнулся с проблемой утечки памяти. С каждым циклом в примере их 10, памяти становится все меньше и меньше. Идея простоя. Есть файл с сигналами. Советник каждый день читает его, удаляет файл, редактирует сигналы и записывает снова. Очень странно видеть ошибку с кучей, учитывая, что команд для работы с ней malloc или realloc в mql5 нет.
Профи подскажите, что не так с кодом или другие советы по управлению памятью.