You have just registered and most likely you have questions such as, "How do I insert a picture to my a message?" "How do I format my MQL5 source code?" "Where are my personal messages kept?" You may have many other questions. In this article, we have prepared some hands-on tips that will help you get accustomed in MQL5.community and take full advantage of its available features.
1) 认为此处有错误:
部分:向构造函数传递参数"Init() "函数在第 私有 部分,以确保类可以重新初始化"。
可能:
将 Init() 函数放在 公共 函数被放在公共部分 ,以提供重新初始化类的可能性。
2) 请举例说明如何在 "对象数组"部分使用 "用类实例(对象)创建数组"功能。遗憾的是,我不知道 "这是用来做什么的"。
3) 在 "关于封装(私有、受保护、公用)的更多信息 "一节中,顺便提到了基类->类的后代。也许这个数据(类 Class:公共 CBase)应该在这一节的开头解释一下,因为我后来才意识到这一点。
4) 没有发现:图 6.额外 "函数(红色箭头)的可见性由加载类的指针类型决定。该示例可在附录中的文件 OOP_sDefaultVirtual_1.mq5 中找到。
5) 我没有找到关于什么是库的明确说明。显然,这是一种存储函数类的方法?也就是说,与包含文件类似,只是包含文件存储为源代码,而库存储为编译后的 dll?
非常感谢你的文章!我对材料的连贯表述尤为满意。
1) 认为此处有错误:
部分:向构造函数传递参数"Init() "函数在第 私有 部分,以确保类可以重新初始化"。
可能:
将 Init() 函数放在 公共 函数被放在公共部分 ,以提供重新初始化类的可能性。
2) 请举例说明如何在 "对象数组"部分使用 "用类实例(对象)创建数组"功能。遗憾的是,我不知道 "这是用来做什么的"。
3) 在 "关于封装(私有、受保护、公用)的更多信息 "一节中,顺便提到了基类->类的后代。也许这个数据(类 Class:公共 CBase)应该在这一节的开头解释一下,因为我后来才意识到这一点。
4) 没有发现:图 6.额外 "函数(红色箭头)的可见性由加载类的指针类型决定。该示例可在附录中的文件 OOP_sDefaultVirtual_1.mq5 中找到。
5) 我没有找到关于什么是库的明确说明。显然,这是一种存储函数类的方式?也就是说,与包含文件类似,只是包含文件存储为源代码,而库存储为编译后的 dll?
非常感谢你的文章!我对材料的连贯表述尤为满意。
1.是的。
2.在 "对象阵列 "一节中有一个示例,实际上整节都是一个附有说明的示例。
3.在 "使用 OOP 更改程序运行逻辑 "一节中考虑了这个问题。
4.4. "该示例位于文件......的附录中 "这句话的意思是,该文件包含了一个用于......4. "本例在文件附录中...... "的意思是,文件中包含本节标题所示章节的例子。这并不意味着示例重复了文章中的所有内容。这些示例可能根本不存在,所有内容都写在文章中。但示例就在那里,你可以以此为基础进行试验。文章是主要的,例子是次要的。
5.Уже давно указано:http://ru.wikipedia.org/wiki/%C1%E8%E1%EB%E8%EE%F2%E5%EA%E0_(%EF%F0%EE%E3%F0%E0%EC%EC%E8%F0%EE%E2%E0%ED%E8%E5)
非常有趣的文章,用 "通俗易懂 "的语言撰写。
感谢作者。
我有两个基于这篇文章的代码示例,它们都是创建一个指向类的指针数组,然后在退出时删除它们。 但是,一个退出时出现内存泄漏,另一个退出时没有出现内存泄漏。唯一不同的是,第二个示例的析构函数中的 "Alert "被注释掉了。 当析构函数中的 "Alert "被删除时,出现了内存泄漏。 这很奇怪,有人能解释一下吗? 请帮帮我,这快把我逼疯了。
在本文代码示例的末尾,我附上了我写的一个极其简单的代码示例,它也存在内存泄漏问题。同样,为什么???? 最后这个代码示例并不复杂.. .
这段代码可以正常运行,没有内存泄漏:
专家日志中的信息,注意没有内存泄露:
PI 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 销毁器 0
KP 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructor 1
JG 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructor 2
EN 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructor 3
LF 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructor 4
OM 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructor 5
FD 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructor 6
IK 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructor 7
HS 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructor 8
CJ 0 OOP_sConstDestr_2 (EURUSD,M1) 13:57:59 Destructor 9
该代码退出时有内存泄漏!!!!!为什么????????? 唯一的区别是在析构函数中注释掉了 "Alert"...
专家日志中的信息,注意泄露的内存:
FM 1 OOP_sConstDestr_2 (EURUSD,M1) 13:51:19 还剩 10 个未删除对象
EG 1 OOP_sConstDestr_2 (EURUSD,M1) 13:51:19 还剩 10 个 CName 类型的对象
GO 1 OOP_sConstDestr_2 (EURUSD,M1) 13:51:19 200 字节泄漏内存
最后一个 例子,我的代码,非常简单,但退出时内存泄漏....
专家日志中的信息,注意泄漏的内存:
MR 0 测试者 (EURUSD,M1) 14:07:23 最后错误- 0当前时间: 2013.02.06 23:07:23
FL 1 tester (EURUSD,M1) 14:07:23 剩余 10 个未删除对象
KN 1 tester (EURUSD,M1) 14:07:23 还剩 10 个 CCandleStick 类型的对象
JS 1 tester (EURUSD,M1) 14:07:23 160 bytes of leaked memory
我有两个例子...
检查了所有三个变量。三个都一样全部正常。没有一个泄漏。在这些示例中,不可能--我们有一个数组,数组的每个元素都有实例,完成后我们删除所有对象。对象不会创建自己的副本,因此不能删除相同的东西。如果对象创建了自己的副本,那么我们在删除时就会遇到困难,很容易遗漏某些内容。显示真正有泄漏的变量。
使用 SRC 按钮插入代码(最好是附加文件)。
对不起,我的英语不好:)
检查了所有三个变量。三个都一样。全部正常。没有一个泄漏。在这些示例中,不可能是这样的--我们有数组,数组的每个元素都有实例,完成后我们删除所有对象。对象不会创建自己的副本,因此不能删除相同的东西。如果对象创建了自己的副本,那么我们在删除时就会遇到困难,很容易遗漏某些内容。显示真正有泄漏的变量。
使用 SRC 按钮插入代码(最好是附加文件)。
对不起,我的英语不好:)
我不确定您是否看到了我的后续问题。因为我对这个论坛不是很熟悉,所以可能被删除了。 不过,我试着在一台旧电脑上用旧版本的 MetaTrader 运行了所有三个示例。 在旧版本中,所有三个示例似乎都运行正常。 它没有生成专家日志 "内存泄漏 "错误,我想应该是 560 版本吧?我不记得了,我把 560 版本升级到了新的 756 版本。 在新版本之后,我遇到了同样的内存泄漏问题。 旧版本没有报告内存泄漏问题,是不是因为它不是一个功能? 您使用的是哪个版本? 再次感谢。