错误、漏洞、问题 - 页 1637 1...163016311632163316341635163616371638163916401641164216431644...3184 新评论 Sergey Dzyublik 2016.08.14 21:10 #16361 Slawa:1.五个还是四个?我猜是4。只需放大测试器窗口。2.采取并测试它哈哈,非常感谢你(mt4)。 1366 x 768((三分之一的屏幕需要被拉长。 你的千里眼技能已经达到了水平。 Sergey Dzyublik 2016.08.14 21:24 #16362 A100:让我们举一个更容易的例子正式地说,有多少个A( A& ) 类的调用?一。至少C++不创建任何中间对象 也许RVO(返回值优化)在C++中是默认设置的? Ilyas 2016.08.15 09:09 #16363 A100:1.复制构造函数的双重调用2.没有 "泄漏的内存 "信息(新的没有删除)。关于RVO的优化(也有NRVO)说得很对,目前它不在MQL编译器中,但将来会加入(目前我们认为这个优化是一个非优先的任务)。没有复制,请仔细检查,你可能没有指定复制的重要细节。 A100 2016.08.15 11:20 #16364 Ilyas: 2.不能复制,请仔细检查,你可能没有指定复制的重要细节。简化的例子class A { public: A() { Print( __FUNCTION__ ); } virtual ~A() { Print( __FUNCTION__ ); } }; void OnStart() { new A(); }结果。2016.08.15 14:17:39.093 Script1 (GBPUSD,M15) A::A 结论:没有调用析构器,同时也没有内存泄漏信息(如下例所示)。//Script2.mq5 class A { public: A() { Print( __FUNCTION__ ); } virtual ~A() { Print( __FUNCTION__ ); } }; void OnStart() { A *a = new A(); }结果。2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 16字节的泄漏内存 2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 1个A型物体离开 2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 剩下1个未删除的对象 2016.08.15 14:26:27.992 Script2 (GBPUSD,M15) A::A Ilyas 2016.08.15 12:01 #16365 谢谢你的澄清。重现--没有泄漏信息,原因在此。优化器在这里进行了过度优化,因为没有对new操作符 中创建的内存或指针进行操作,这个内存的分配被移除。我们将考虑是否在优化器中修复这个 "错误",或者对其进行改进,以便将一个指针保存到一个未使用的变量中,不会阻止删除新的操作。 Dmitry Voronkov 2016.08.15 12:18 #16366 下午好。 请告知开发人员,为什么MQL4和MQL5具有从专家顾问中删除指标子窗口的功能,而他们却没有创建指标窗口的功能。 我必须使用模板或手动启动窗口指标,这并不方便,因为图表上的信息会丢失。 我还希望能够从一个资源文件中启动和显示指标。 或者建议如何去做。 fxsaber 2016.08.15 12:20 #16367 Slawa:你不是那个组织 "可视化提示 "的人吗?你为什么认为这是一个错误呢?文件夹的名称与进行连接的端口号相对应。 这是我.....谢谢,知道了。 fxsaber 2016.08.15 12:21 #16368 做一个宏#define MACROS(A) "##A##" 我想让MACROS(Num)被 "Num "取代,但结果总是 "##A###"。是否可以定义一个宏来获得我想要的东西? fxsaber 2016.08.15 12:24 #16369 我为自己做了一个小小的发现void OnStart() { double dPrice = 1.08249; int iPrice = (int)((dPrice / _Point) + 0.1); double dNewPrice = iPrice * _Point; // При этом нормализации это значение не требует в OrderSend if (dPrice != dNewPrice) Print((string)(dPrice - dNewPrice)); }如果你在Integer * Point(没有归一化)开了一个订单,然后要求开盘价,它将与非归一化的Integer * Point不同。为什么OrderSEnd总是使用非标准化的Integer * Point价格? Ilyas 2016.08.15 12:38 #16370 fxsaber:我在做一个宏,我想让MACROS(Num)被 "Num "取代,但结果总是 "##A###"。是否可以定义一个宏来获得我想要的东西?移除宏主体中的反转逗号要将宏参数转换为字符串,请使用#。#define MACROS(A) #A##是用来串联标记的。 1...163016311632163316341635163616371638163916401641164216431644...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
1.五个还是四个?我猜是4。只需放大测试器窗口。
2.采取并测试它
哈哈,非常感谢你(mt4)。
1366 x 768((三分之一的屏幕需要被拉长。
你的千里眼技能已经达到了水平。
让我们举一个更容易的例子
正式地说,有多少个A( A& ) 类的调用?一。至少C++不创建任何中间对象
1.复制构造函数的双重调用
2.没有 "泄漏的内存 "信息(新的没有删除)。
简化的例子
结果。
2016.08.15 14:17:39.093 Script1 (GBPUSD,M15) A::A
结论:没有调用析构器,同时也没有内存泄漏信息(如下例所示)。
结果。
2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 16字节的泄漏内存
2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 1个A型物体离开
2016.08.15 14:26:27.993 Script2 (GBPUSD,M15) 剩下1个未删除的对象
2016.08.15 14:26:27.992 Script2 (GBPUSD,M15) A::A
优化器在这里进行了过度优化,因为没有对new操作符 中创建的内存或指针进行操作,这个内存的分配被移除。
我们将考虑是否在优化器中修复这个 "错误",或者对其进行改进,以便将一个指针保存到一个未使用的变量中,不会阻止删除新的操作。
请告知开发人员,为什么MQL4和MQL5具有从专家顾问中删除指标子窗口的功能,而他们却没有创建指标窗口的功能。
我必须使用模板或手动启动窗口指标,这并不方便,因为图表上的信息会丢失。
我还希望能够从一个资源文件中启动和显示指标。
或者建议如何去做。
你不是那个组织 "可视化提示 "的人吗?
你为什么认为这是一个错误呢?文件夹的名称与进行连接的端口号相对应。
我为自己做了一个小小的发现
如果你在Integer * Point(没有归一化)开了一个订单,然后要求开盘价,它将与非归一化的Integer * Point不同。
为什么OrderSEnd总是使用非标准化的Integer * Point价格?
移除宏主体中的反转逗号
要将宏参数转换为字符串,请使用#。
#define MACROS(A) #A
##是用来串联标记的。