Особенности языка mql5, тонкости и приёмы работы - страница 217
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как теперь (b3110) обнулить непростую структуру?
Конструктор с обнулением.
А если нужно обнулить в процессе работы, то еще и доп. метод для этого:
Конструктор с обнулением.
А если нужно обнулить в процессе работы, то еще и доп. метод для этого:
Хотелось бы универсальный способ, как когда-то позволял ZeroMemory.
Считайте что поменял - теперь проверяю 1ый член на равенство нулю x[i].i == 0 (ранее условие было x[i].x == 0.0)
Результат: false
А с ZeroMemory - true
Спасибо, исправил.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
mktr8591, 2021.08.12 19:43
Вот я сейчас выставляю отложенный лимитник. Затем меняю его руками и скриптом и ORDER_TIME_SETUP изменяется.
Пример, что меняется.
Лог выставления.
ORDER_TIME_SETUP изменяется. Баг?
Хотелось бы универсальный способ, как когда-то позволял ZeroMemory.
А буфер в string кто освобождать будет? ZeroMemory, по сути является аналогом этого.
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/aa366920(v=vs.85)
Никакие деструкторы вызываться не будут. Соответственно в string обнулится указатель на буфер, а сам буфер утечет. Прямая работа с памятью - это как минное поле, чуть бдительность потерял и все)))
Пример утечки для твоего случая:
Объект больше не владеет указателем на буфер, а сам буфер "утек".
PS. Ну его нафиг не POD типы обнулять через memset и ZeroMemory
PS. Ну его нафиг не POD типы обнулять через memset и ZeroMemory
Не проверял, но думаю, строковый буфер обнуляется.
Не проверял, но думаю, строковый буфер обнуляется.
А с какого такого ему обнуляться?)))
Тут все по взрослому, как и должно быть)))
UPD: t1, t2 с их выводом, для того, что бы компилятор это дело все не заоптимизировал)
UPD2: оно конечно может быть они и вызывают delete для буфера, но я, вот так с ходу, не могу придумать, как они это для случая, когда string внутри структуры сделать
UPD3: хотя в справке написано, что для него персонально вызывается, значит должны буфер освобождать, это я, надеюсь, что по указателю на освобожденную уже память данные считываю.
А с какого такого ему обнуляться?)))
Хорошо бы посмотреть
Print(GetAddress(a.a));
До и после.
Хорошо бы посмотреть
До и после.
Как и положено. В первом случае адрес памяти, во втором 0
А с какого такого ему обнуляться?)))
Тут все по взрослому, как и должно быть)))
UPD: t1, t2 с их выводом, для того, что бы компилятор это дело все не заоптимизировал)
UPD2: оно конечно может быть они и вызывают delete для буфера, но я, вот так с ходу, не могу придумать, как они это для случая, когда string внутри структуры сделать
UPD3: хотя в справке написано, что для него персонально вызывается, значит должны буфер освобождать, это я, надеюсь, что по указателю на освобожденную уже память данные считываю.
В принципе там все достаточно тривиально в реализации должно быть)