У меня даже с маленькой структурой после вылета за пределы массива
(размер массива этой структуры нулевой был при обращении) в журнал
выдалось сообщение про утечку памяти на пять string объектов - в массиве
всего пять структур было.
У меня даже с маленькой структурой после вылета за пределы массива
(размер массива этой структуры нулевой был при обращении) в журнал
выдалось сообщение про утечку памяти на пять string объектов - в массиве
всего пять структур было.
Core 1 pass 0 returned result 99753711.00in0:00:03.729
Core 1 pass 1 returned result 99753711.00in0:00:03.432
Core 1 pass 2 returned result 99753711.00in0:00:03.401
Core 1 pass 3 returned result 99753711.00in0:00:03.354
Core 1 pass 4 returned result 99753711.00in0:00:03.323
Core 1 pass 5 returned result 99753711.00in0:00:03.385
Core 1 pass 6 returned result 99753711.00in0:00:03.448
Core 1 pass 7 returned result 99753711.00in0:00:03.369
Core 1 pass 8 returned result 99753711.00in0:00:03.369
Core 1 pass 9 returned result 99753711.00in0:00:03.385
Tester optimization finished, total passes 10
Statistics optimization done in0 minutes 35 seconds
Statistics shortest pass 0:00:03.323, longest pass 0:00:03.729, average pass 0:00:03.419
Virtual
Core 1 pass 0 returned result 99753711.00in0:00:02.231
Core 1 pass 1 returned result 99753711.00in0:00:01.217
Core 1 pass 2 returned result 99753711.00in0:00:01.217
Core 1 pass 3 returned result 99753711.00in0:00:01.185
Core 1 pass 4 returned result 99753711.00in0:00:01.170
Core 1 pass 5 returned result 99753711.00in0:00:01.201
Core 1 pass 6 returned result 99753711.00in0:00:01.186
Core 1 pass 7 returned result 99753711.00in0:00:01.201
Core 1 pass 8 returned result 99753711.00in0:00:01.185
Core 1 pass 9 returned result 99753711.00in0:00:01.202
Tester optimization finished, total passes 10
Statistics optimization done in0 minutes 13 seconds
Statistics shortest pass 0:00:01.170, longest pass 0:00:02.231, average pass 0:00:01.299
Разница в три раза, как и было с 1881. Возможно, где-то в другом месте подкрутили. Но темы OrderSend, скорее всего, не касались.
Берём пример из описания функции StringSplit() в разделе Документация.
Запускаем:
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
string to_split="_мама_мыла_раму_"; // строка для разбивки на подстрокиstring sep="_"; // разделитель в виде символаushort u_sep; // код символа разделителяstring result[]; // массив для получения строк//--- получим код разделителя
u_sep=StringGetCharacter(sep,0);
//--- разобьем строку на подстрокиint k=StringSplit(to_split,u_sep,result);
//--- выведем комментарий PrintFormat("Получено строк: %d. Использован разделитель '%s' с кодом %d",k,sep,u_sep);
//--- теперь выведем все полученные строкиif(k>0)
{
for(int i=0;i<k;i++)
{
PrintFormat("result[%d]=\"%s\"",i,result[i]);
}
}
}
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Так у тебя где-то неудалённый объект остался. Вот тебе и пишут про утечку памяти.
В узком окошке не видно всего, но 586 объектов не удалены и остаются в памяти.
В программе ничего не менялось после обновления. Попробуй у себя. Там классы из стандартной библиотеки используются.
P.S. Заменил скриншот.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5
Anatoli Kazharski, 2018.10.27 09:32
При удалении программы с графика в журнал выводятся вот такие предупреждения:
//---
Раньше такого не было. Как от этого избавиться?
В тестере тоже такое впервые вижу.
В тестере тоже такое впервые вижу.
У меня даже с маленькой структурой после вылета за пределы массива (размер массива этой структуры нулевой был при обращении) в журнал выдалось сообщение про утечку памяти на пять string объектов - в массиве всего пять структур было.
Ты свои объекты не цепляешь к массиву объектов?У меня даже с маленькой структурой после вылета за пределы массива (размер массива этой структуры нулевой был при обращении) в журнал выдалось сообщение про утечку памяти на пять string объектов - в массиве всего пять структур было.
Ты свои объекты не цепляешь к массиву объектов?Нужно сделать краткий пример для воспроизведения.
Нужно сделать краткий пример для воспроизведения.
Сложно - не у компа уже, и буду поздно.
В индикаторе к массиву структур обращался в OnItit() прежде, чем увеличил размер массива и заполнил в массиве структуры данными.
1. объявил структуру из двух полей string и bool
2. объявил массив структур
3. вызвал функцию, выводящую данные из массива структур
4. увеличил размер массива структур
5. заполнил структуры в массиве данными.
Как видно, пункт 3 должен быть после пункта 5.
Вот такое и вызвало утечку памяти из пяти string-объектов
Краткий код для воспроизведения:
//---
При удалении программы с графика:
Краткий код для воспроизведения:
//---
При удалении программы с графика:
Да, баг. У меня тоже появилось в 1930. Динамических объектов не создается, но память утекает...
А в 1918 все норм еще было.На каком советнике замеры производили?
ЗЫ
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
fxsaber, 2018.10.27 14:17
1930
Virtual
Разница в три раза, как и было с 1881. Возможно, где-то в другом месте подкрутили. Но темы OrderSend, скорее всего, не касались.
Нужно сделать краткий пример для воспроизведения.
Берём пример из описания функции StringSplit() в разделе Документация.
Запускаем:
Получаем:
Причём,
ArrayFree(result);не решает проблему.
А вот присвоение пустых строк - решает: