А объясните пожалуйста еще, что делать в деинициализации. Я в кодах встречал, что удаляются только экземпляры классов. А переменные и массивы нужно обнулять? Что вообще это даёт? А если не удалить классы? Они останутся в памяти до выключения терминала ? или даже после?
Ivan_Invanov: А объясните пожалуйста еще, что делать в деинициализации. Я в кодах встречал, что удаляются только экземпляры классов. А переменные и массивы нужно обнулять? Что вообще это даёт? А если не удалить классы? Они останутся в памяти до выключения терминала ? или даже после?
Удалять надо только объекты, создаваемые через new.
Думаю, что будет удален, но не факт. Не стоит на это надеяться. Сам создал - сам удали.
Удаляется, точно, просто требуют контроль созданных объектов. Это нужно чтобы программист знал что и где он создаёт и удаляет, уменьшает вероятность ошибок связанных с утечкой памяти в процессе работы программ.
Проясните пожалуйста ситуацию с операторами == и != . Если сравнимые переменные представлены истиной, когда они имеют любое ненулевое значение(в справке так написано). Как тогда представлены массивы? И почему в этом примере идёт сравнение "не равно двум", почему именно двум, если любое ненулевое значение это истина, если нет разницы, если бы там стояла 1, почему там написано именно 2 ? Вот код из официального примера (из советника с терминалом Moving Average 2009-2017 v1.00 строка 132).
MqlRates rt[2];
//--- go trading only for first ticks of new barif(CopyRates(_Symbol,_Period,0,2,rt)!=2)
{
Print("CopyRates of ",_Symbol," failed, no history");
return;
}
1. Верно ли, что любое ненулевое значение представлено истиной , когда сравнивается в операторах "==" , "!=" ?
2. Как представлен массив? как его вообще можно сравнить с числом?
3. Почему в сравнении стоит "2"? Если согласно справке истина это любое ненулевое значение, тогда логично написать "1".
4. сработало ли условие if если CopyRates получила ошибку ?
Нужно делать так:
А объясните пожалуйста еще, что делать в деинициализации. Я в кодах встречал, что удаляются только экземпляры классов. А переменные и массивы нужно обнулять? Что вообще это даёт? А если не удалить классы? Они останутся в памяти до выключения терминала ? или даже после?
Удалять надо только объекты, создаваемые через new.
Удалять надо только объекты, создаваемые через new.
Спасибо. А почему?
Потому что он сам не удаляется.
Потому что он сам не удаляется.
А если терминал закрыть, останется?
Думаю, что будет удален, но не факт. Не стоит на это надеяться. Сам создал - сам удали.
Думаю, что будет удален, но не факт. Не стоит на это надеяться. Сам создал - сам удали.
1. Верно ли, что любое ненулевое значение представлено истиной , когда сравнивается в операторах "==" , "!=" ?
2. Как представлен массив? как его вообще можно сравнить с числом?
3. Почему в сравнении стоит "2"? Если согласно справке истина это любое ненулевое значение, тогда логично написать "1".
4. сработало ли условие if если CopyRates получила ошибку ?