新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 596

 
Juer:

好的。让我在OnDeinit()中删除它们。但现在我在测试过程中已经出现了内存不足的错误......。也就是说,它不会到达OnDeinit()。

因此,你将创建一堆双倍对象。然后一切都会变成地狱,你将无法找到它的尽头。

 
Artyom Trishkin:

所以你创造了一堆重复的对象。那么整个事情就会丢失,你将无法找到它的尽头。

我怎样才能准确地知道我没有删除的对象?这是个大项目 :)

 
Juer:

我怎样才能准确地知道我没有删除的对象?这是一个大方案 :)

你应该首先找出你在哪里以及如何创造了这样一个堆积物。如果我没记错的话,你有,什么,一万个?它们是什么?它们是历史数据对象吗?或者什么样的物体有这么多?一个对象的阵列--什么的阵列?

 
Artyom Trishkin:

你应该首先找出你在哪里以及如何做出这样的堆积物。如果我没记错的话,你们那里有成千上万的人,对吗?它们是什么?历史数据的对象?或者什么样的物体有这么多?一个对象的阵列--什么的阵列?

啊,那里面有很多东西。主要是蜡烛的类型 和规则。这很复杂 ))

 
Juer:

我怎样才能准确地知道我没有删除的对象?这是一个大方案 :)

你不会在每次勾选时都创建一个新的对象。当然这是可能的(但在我看来并不总是合理的),但在 完成对对象 的处理后立即放气肯定更合理。这是我能想到的唯一解释。

 
Juer:

啊,那里面有很多东西。主要是蜡烛的类型 和规则。这很复杂 ))

这对一些人来说很复杂,对另一些人来说则不复杂。但现在就看你怎么去解决了。

一句话的建议。从头开始。逐步将需要的对象添加到代码中,看看输出中会发生什么--如果当你改变TF或重新编译后,你会在日志中得到关于未删除对象和内存泄漏的信息,那么就修正它。下一步--再次添加功能,检查所有对象的正确存储、使用和删除。如果你用新创建的,你必须自己删除它们。

 
Konstantin Nikitin:

你不会在每次勾选时都创建一个新的对象,对吗?这是有可能的(但在我看来并不总是合理的),但一旦你 完成了对对象 的处理,可能更合理的做法是将其放空。这是我想到的唯一解释。

在每支蜡烛上。

 
Juer:

在每支蜡烛上。

好吧,如果你不需要以前的对象,值得直接删除它们。

 
Konstantin Nikitin:

好吧,如果你不需要以前的对象,你应该马上删除它们。

是的,这就是问题所在。它是如此混乱,对象在其他对象中,而且已经不那么容易删除。有些对象依赖于其他对象,而那些依赖于第一个对象的第三个对象 :)

生活是如此的复杂 :(

 
Juer:

是的,这就是问题所在。它是如此混乱,对象在其他对象中,而且已经不那么容易删除。有些对象依赖于其他对象,而那些依赖于第一个对象的第三个对象 :)

生活是如此的复杂 :(

你把这一切都搞混了。对任务的不正确规划正是导致这种后果的原因。

如果对象是在一个类中创建的,那么这个类在结束时必须在其析构器中删除它们。其他类必须在获得 该对象的指针之前检查其是否有效。而在原则上,不应该有这样的交织关系。这是个有点纠结的问题。复杂并不意味着质量。一切都应该是透明的和可追溯的。首先,也是最重要的--为了你。

原因: