Я обнаружил, что директива #include игнорируется, если повторяется, т.е.
int OnStart() { #include <dummy.mqh> #include <dummy.mqh> #include <dummy.mqh> #include <dummy.mqh> }
работает так же, как
int OnStart() { #include <dummy.mqh> }
Хотя это очень удобное поведение, если у вас есть объявления классов в отдельных файлах, оно не упоминается в файле помощи.
Вы задаете общий вопрос по программированию, например, убедитесь, что "удаляете динамически выделенную память" || "ограничиваете использование рекурсивных функций". Или вы имеете в виду ошибку утечки памяти в бета-версии?
Определенно первое. У меня нет опыта заботы о неиспользуемых объектных ссылках, так как мой опыт связан с JAVA. Поэтому я имею в виду, что буду признателен за подсказку для поиска утечки объектов после получения общего предупреждения (если такая подсказка существует). В данный момент я пытаюсь определить класс утекающего объекта по количеству байт, которые выводит предупреждение.
Он неполный по сравнению с mt5. Должна быть еще одна строка с названием класса. Надеюсь, они скоро добавят это.
Что ж, поиск утечек оказался действительно раздражающим... больше, чем я ожидал.
Я потратил некоторые усилия на создание инструмента, но у меня ничего не получилось. Хотя я обнаружил, что могу переопределить операторы new/delete, я понял, что мне нечем их заменить. Если бы это были функции с круглыми скобками, то все было бы довольно просто, но, к сожалению, это утверждения. Я мог бы создать обертку вокруг операторов new/delete для их регистрации, но это было бы очень болезненное решение, у которого нет будущего.
Если у кого-то есть опыт, как обнаружить источник утечки, пожалуйста, напишите.
Что ж, поиск утечек оказался действительно раздражающим... больше, чем я ожидал.
Я потратил некоторые усилия на создание инструмента, но у меня ничего не получилось. Хотя я обнаружил, что могу переопределить операторы new/delete, я понял, что мне нечем их заменить. Если бы это были функции с круглыми скобками, то все было бы довольно просто, но, к сожалению, это утверждения. Я мог бы создать обертку вокруг операторов new/delete для их регистрации, но это было бы очень болезненное решение, у которого нет будущего.
Если у кого-то есть опыт, как обнаружить источник утечки, пожалуйста, напишите.
Возможно, эти статьи (для mql5, но то же самое относится и к новому mql4) помогут вам найти решение:
Порядок создания и уничтожения объектов в MQL5
Использование объектных указателей в MQL5Возможно, эти статьи (для mql5, но то же самое относится и к новому mql4) помогут вам найти решение:
Порядок создания и уничтожения объектов в MQL5
Использование объектных указателей в MQL5
Спасибо за вашу заметку.
К сожалению, это не поможет в лечении утечек, а только объяснит, почему они происходят.
Единственное решение, которое я использовал до сих пор, - это написание модульного теста для каждой части кода, которую я создаю, и частое выполнение модульных тестов во время разработки. Таким образом, если утечка появляется, я могу попытаться изолировать тест-кейс, который ее вызвал. Однако некоторые тесты довольно сложны, так что это непростое решение. А редактор - это настоящая боль.
Как отличить новый синтаксис?
Мне кажется, что для обозначения "нового" синтаксиса и "оригинального" синтаксиса нужно другое слово. Похоже, что MQ не заботится об официальных названиях и продолжает делать вид, что они совместимы.
Так что, похоже, нам придется самим искать подходящие названия. Какие есть предложения? MQL4 V2, OMQL4 (т.е. Object-), MQL4.1 ...?
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Прошло некоторое время с момента выхода бета-версии, и я заметил где-то заметку, что регулярный релиз может появиться в середине января. Хотя я сомневаюсь, что это произойдет, возможно, несколько кодеров почувствуют интерес поделиться идеями и проблемами, которые они узнали в бета-версии.
Есть ли уже смысл начинать обсуждение нового синтаксиса исходников MQL4, редактора, компилятора, паттернов, ООП или чего-то еще, связанного с этим?
Пожалуйста, никаких сообщений об ошибках, никаких криков, только конструктивное обсуждение в этой теме.