После загрузки на исполнение mql5-программы каждой переменной выделяется память в соответствие с типом переменной. Переменные делятся на два типа по уровню доступа - глобальные переменные и локальные переменные, и по классам памяти: входные параметры mql5-программы, статические и автоматические. Каждая переменная при необходимости...
Все объекты, созданные выражением указатель_объекта=new Имя_Класса, обязательно должны быть впоследствии уничтожены оператором delete(указатель_объекта).
Если по каким то причинам такая переменная по окончании работы программы не была уничтожена оператором delete, то об этом будет выведено сообщение в журнал "Эксперты".
Можно объявить несколько переменных и всем им присвоить указатель одного объекта.
Если динамически создаваемый объект имеет конструктор, то этот конструктор будет вызван в момент выполнения оператора new. Если объект имеет деструктор,
то деструктор будет вызван в момент выполнения оператора delete.
谢谢,但我在那里没有看到对我的问题的任何答案。
我不明白为什么当A *a= new A 时不调用析构器 。
https://www.mql5.com/ru/docs/basis/variables/object_live
所有由表达式pointer_object=newClass_name创建的对象必须在事后被delete(pointer_object)操作符销毁。如果由于某种原因,这个变量没有被删除操作者 销毁,有关它的信息将出现在 "专家 "日志中。可以声明几个变量,并把它们都分配给同一个对象指针。
我要求MQL检查OnTimer()函数。
由于某些原因,它在MT4的策略测试器中不起作用(没有错误,只是这个函数里面没有任何东西被执行),而在网上则没有问题。
对于MT5来说,该功能在测试器和在线中都可以使用。
谢谢你!
在OnInit中,只有两个数字被比较,而且一个不正确的通过比一个完整的通过需要更多的时间。怎么会呢?
让我们在完全优化的情况下运行这个专家顾问
我们得到了8个代理的工作结果
这里是我们的专家顾问,现在
最后,像这样的
两个输出
关于第二点,显然存在着某种错误。从时间上看,执行空运行比从OnInit中跳出来更有利。请纠正它,因为Incorrect-Init和ExpertRemove的优势将几乎完全丧失。
带有EA/指标/脚本和账户的收藏夹标签 只有在退出终端后才会被记住。正因为如此,非正常退出(断电)会重置这个标签。更改时是否可以保存?
有时,人们清楚地认识到,如果能将文件夹添加到收藏夹中,将会非常方便。
然后像这样试试。
结果。
1:pointer_automatic
1:pointer_dynamic
2:pointer_dynamic
2:pointer_automatic
谢谢你!相当于一个解决方案。
但是,编译器不说脏话可能更好。
这是个错误还是什么?
当你通过new 创建一个类的实例时,它并不调用析构器。
创建一个特殊的类来调用析构器,这是唯一的解决办法吗?或者我们可以不这样做吗?
用new 创建,用delete删除
问题是把delete 放在一个析构器中,但是当通过new (A *a=newA ;)创建一个类的实例时,析构器没有被调用。
有没有可能,如果有,如何在任何ZigZag指标中得出价格极值High和Low的相应值。
确保它们稳定地结合并靠近成型的顶部和底部?
见OBJ_TEXT 的例子
https://www.mql5.com/ru/docs/basis/variables/object_live
谢谢你。
这正是这里所说的。
所以这不是一个错误,而是一个导致恶性循环的特征。
如果我想把删除一个动态对象的过程自动化,析构器只在delete 时被调用,所以把delete 放到析构器本身是没有用的。
但自动化可以通过另一个类的另一个实例来实现,正如@A100在这里 建议的那样。
谢谢你的提示。我读了又读,试了又试,已经很累了。我想看看ZigZag的工作实例...
就像我的头像上的 "之 "字形,但上极点的结合是正确的,因为下极点的结合是可以的!"。
用k=(WindowPriceMax()-WindowPriceMin())/30的绑定方式在窗口尺寸变化较大时不起作用,我希望有别的办法。
在OBJ_TEXT 的例子中,顶部和底部都有绑定。遵循该链接,运行该例子...
所以这不是一个错误,而是一个特点,导致了一个恶性循环。
前面已经告诉你,解决分配的不可管理的资源的控制的方法是使用智能指针。与C++的全面类比。
也许问题在于,解决方案并不是在银盘子上呈现的,对不起。
每个人都可以在网站搜索中输入 "shared_ptr",并按照第一个结果进行搜索,这并不难,我强烈建议大家尝试。