MQL5中的OOP问题 - 页 10 1...34567891011121314151617...96 新评论 Dmitry Fedoseev 2019.07.05 12:20 #91 Vasiliy Sokolov: ...在MQL中使用哪种变体是未知的... 在MQL中没有垃圾收集器。 Dmitry Fedoseev 2019.07.05 12:26 #92 Vasiliy Sokolov: 下午好。 不管是在堆栈还是堆的背景下使用,计算机内存都具有相同的性能。动态内存管理本身取决于垃圾收集器的实现:例如,它可以是Python中的引用计数(较慢的变体),或者在后台进程中通过执行图的遍历来分析对象的生成周期(Net CLR)。 在MQL中使用的是哪种变体,我们不得而知,但我们可以假设它非常有效,因为MQL5的用户可以直接访问删除操作符,这大大简化了GC本身的工作。 因此,你对使用new 时的开销的担心是毫无根据的--请随意使用动态内存。 至于 "堆栈溢出",在现代系统中,你可能遇到这种情况的唯一途径是在使用复杂的递归或在递归算法中犯错。现代程序总是在虚拟地址空间的OC保护模式下工作,动态加载内存页,所以不用担心:堆栈不会溢出:) 错误的陈述。 Igor Makanu 2019.07.05 12:26 #93 Dmitry Fedoseev: 在MKL,没有垃圾收集者。 信息来自哪里?MT4 / MT5写在什么上面?- 有什么信息吗? ;) ZS:最大限度地自由使用--来自Metakvot的工作空缺,对程序员有书面要求的申请人;) Dmitry Fedoseev 2019.07.05 12:28 #94 Igor Makanu: 信息来自哪里?MT4 / MT5写在什么上面?- 有什么信息吗? ;) ZS:最大限度地自由使用--来自Metakvot的工作空缺,对程序员有书面要求的申请人;) 用什么写的有什么区别呢?在mql中,用new创建的对象不会被自己删除。顺便说一下,C++中也没有)) Vasiliy Sokolov 2019.07.05 13:04 #95 Dmitry Fedoseev: 在MKL,没有垃圾收集者。 迪米特里,你错了。这里有三个原因,MetaTrader毕竟有一个垃圾收集器。 MQL5自动删除没有新创建的对象。这类对象的指针具有AUTOMATIC类型。它们可以被圣灵自动删除,也可以被垃圾收集者删除。 开发人员不止一次提到,MQL5程序是由MetaTrader内部虚拟机 执行的。如果有一个虚拟机,那么也一定有一个垃圾收集器。 如果一个动态对象没有按照用户的要求被删除,MetaTrader将用 "泄漏的内存 "信息来显示,说明有多少对象和哪些对象没有被删除。也就是说,MetaTrader知道事实上已经分配了多少和什么--也就是说,很明显,有一些系统在平行运行,控制内存处理,这就是垃圾收集器。 Vasiliy Sokolov 2019.07.05 13:13 #96 Dmitry Fedoseev: 错误的陈述。 P.S. 这些年来,你倒是变了很多。你已经变得有些唾手可得了。我记得你曾经提供过很多建设性的建议。现在你们不断地争吵:毫无意义的争论/否认/攻讦。这一切是为了什么?你想更用力地打我吗?- 我自己给你一块石头:你想怎么打就怎么打,但我还是为你感到难过。 Dmitry Fedoseev 2019.07.05 13:15 #97 Vasiliy Sokolov: 迪米特里,你错了。这里有三个原因,MetaTrader毕竟有一个垃圾收集器。 MQL5自动删除没有新创建的对象。这类对象的指针具有AUTOMATIC类型。它们可以被圣灵自动删除,也可以被垃圾收集者删除。 开发人员不止一次提到,MQL5程序是由MetaTrader内部虚拟机 执行的。如果有一个虚拟机,那么也一定有一个垃圾收集器。 如果一个动态对象没有按照用户的要求被删除,MetaTrader将用 "泄漏的内存 "信息来显示,说明有多少对象和哪些对象没有被删除。因此,MetaTrader确切地知道分配了多少和什么 - 很明显,有一些系统在平行运行,控制内存处理,这是一个垃圾收集器。 1.不是圣灵,也不是收集垃圾的人。 2.3 你可以无休止地进行幻想。 Dmitry Fedoseev 2019.07.05 13:15 #98 Vasiliy Sokolov: Z.I.这些年来,你已经改变了很多。你已经变得有点愤世嫉俗了。我记得你曾经提供过很多建设性的建议。现在你们不断争吵:只是毫无意义的争论/否认/谴责。这一切是为了什么?你想更用力地打我吗?- 我自己给你一块石头:你想怎么打就怎么打,反正我对你感到抱歉。 唏嘘不已! Vladimir Simakov 2019.07.05 13:38 #99 Dmitry Fedoseev: 1.既不是圣灵,也不是收集垃圾的人。 2.3 想象力是无穷的。 让我们阅读一下文件。new操作符并不返回一个指向对象的指针,而是返回一个对象描述符。我敢建议,任何类都要用一些包装器来包装,在最小化程序时安全地杀死被遗忘的对象,同时善意地指出泄漏的存在。一般来说,这种机制最好留给创作者来评论。 Dmitry Fedoseev 2019.07.05 13:53 #100 Vladimir Simakov: 让我们阅读一下文件。new操作符并不返回一个指向对象的指针,而是返回一个对象描述符。我敢建议,任何类都要用一些包装器来包装,在最小化时安全地杀死被遗忘的对象,同时善意地指出现有的泄漏问题。一般来说,这种机制最好留给创作者来评论。 是的,它删除并写了一条关于内存泄漏的信息,只是为了让那些写EA的程序员不至于生活得很无聊。 有趣的是,昨天还有一个内存泄漏,而今天根本不可能有。 说到鸟......描述符也是指针。而且你知道,这个词本身并没有改变任何东西,不管它是一个描述符、一个指针、一个标识符。 1...34567891011121314151617...96 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
...在MQL中使用哪种变体是未知的...
下午好。 不管是在堆栈还是堆的背景下使用,计算机内存都具有相同的性能。动态内存管理本身取决于垃圾收集器的实现:例如,它可以是Python中的引用计数(较慢的变体),或者在后台进程中通过执行图的遍历来分析对象的生成周期(Net CLR)。 在MQL中使用的是哪种变体,我们不得而知,但我们可以假设它非常有效,因为MQL5的用户可以直接访问删除操作符,这大大简化了GC本身的工作。 因此,你对使用new 时的开销的担心是毫无根据的--请随意使用动态内存。
至于 "堆栈溢出",在现代系统中,你可能遇到这种情况的唯一途径是在使用复杂的递归或在递归算法中犯错。现代程序总是在虚拟地址空间的OC保护模式下工作,动态加载内存页,所以不用担心:堆栈不会溢出:)
错误的陈述。
在MKL,没有垃圾收集者。
信息来自哪里?MT4 / MT5写在什么上面?- 有什么信息吗?
;)
ZS:最大限度地自由使用--来自Metakvot的工作空缺,对程序员有书面要求的申请人;)
信息来自哪里?MT4 / MT5写在什么上面?- 有什么信息吗?
;)
ZS:最大限度地自由使用--来自Metakvot的工作空缺,对程序员有书面要求的申请人;)
用什么写的有什么区别呢?在mql中,用new创建的对象不会被自己删除。顺便说一下,C++中也没有))
在MKL,没有垃圾收集者。
迪米特里,你错了。这里有三个原因,MetaTrader毕竟有一个垃圾收集器。
错误的陈述。
P.S. 这些年来,你倒是变了很多。你已经变得有些唾手可得了。我记得你曾经提供过很多建设性的建议。现在你们不断地争吵:毫无意义的争论/否认/攻讦。这一切是为了什么?你想更用力地打我吗?- 我自己给你一块石头:你想怎么打就怎么打,但我还是为你感到难过。
迪米特里,你错了。这里有三个原因,MetaTrader毕竟有一个垃圾收集器。
1.不是圣灵,也不是收集垃圾的人。
2.3 你可以无休止地进行幻想。
Z.I.这些年来,你已经改变了很多。你已经变得有点愤世嫉俗了。我记得你曾经提供过很多建设性的建议。现在你们不断争吵:只是毫无意义的争论/否认/谴责。这一切是为了什么?你想更用力地打我吗?- 我自己给你一块石头:你想怎么打就怎么打,反正我对你感到抱歉。
唏嘘不已!
1.既不是圣灵,也不是收集垃圾的人。
2.3 想象力是无穷的。
让我们阅读一下文件。new操作符并不返回一个指向对象的指针,而是返回一个对象描述符。我敢建议,任何类都要用一些包装器来包装,在最小化时安全地杀死被遗忘的对象,同时善意地指出现有的泄漏问题。一般来说,这种机制最好留给创作者来评论。
是的,它删除并写了一条关于内存泄漏的信息,只是为了让那些写EA的程序员不至于生活得很无聊。
有趣的是,昨天还有一个内存泄漏,而今天根本不可能有。
说到鸟......描述符也是指针。而且你知道,这个词本身并没有改变任何东西,不管它是一个描述符、一个指针、一个标识符。