阵列引用 - 页 6

 

供参考。

  1. MQL5中的所有数组都只通过引用来传递(堆栈中的4或8字节),所以不要害怕在函数中传递数组--没有特殊的费用。
  2. 存储真正的内存引用是非常危险的,特别是对终端本身控制的数组的引用(指示器缓冲区、OHLC缓冲区),因为它们真的被改变/重新分配了。此外,在对EA的调用(退出和进入脚本代码)之间,不可能保存无记载的引用。
  3. 当把一个数组传递给DLL时,要指定数据块的起始地址,而尺寸则要单独指定。
 
mql5:

首先要明白的是,为什么?那它有什么用呢?

你不想做链接,我们会自己做。

感谢参与者,感谢这个主题中的帖子,我发现,帮助中的描述 已经过时了......

是的,这很搞笑)。但实际上,我甚至没有想到它可以在帮助中发表。

也许你已经可以告诉我所有的旗帜了,那么?

雷纳特

供参考。

  1. MQL5中的所有数组都只通过引用来传递(堆栈中的4或8字节),所以不要害怕在函数中传递数组--没有特殊的费用。

我并不害怕,我很清楚,这是很便宜的。这只是不方便。

  1. 存储真正的内存引用是非常危险的,特别是对终端本身管理的数组的引用(指示器缓冲区、OHLC缓冲区),因为它们真的被改变/重新分配了。更有甚者,EA的调用(退出和进入脚本代码)之间的无记录引用不得保存。

请详细说明这一点--在OnCalculate过程中能否有内存的重新分配?这是胡说八道。

当然,关于电话之间的问题,是很清楚的。

我不希望有一个绑定指标或终端的功能,所以我将使用最安全的变体。

 
TheXpert:

关于这一点,请多多指教--在OnCalculate过程中能否有内存的重新分配?这实在是太疯狂了。


不是 "期间"--之间。
 
TheXpert:

关于这一点,请多多指教--在OnCalculate过程中能否有内存的重新分配?这真让人无奈。

当然,关于电话之间的问题,是可以理解的。

当然,我们谈论的是可能在电话之间进行重新分配。

问题是,有人会在调用之间错误地或明确地保存引用,在99%的情况下,一切都会工作,直到崩溃。之后会有相当预期的想法 "这是Metakvotes的错"。

例如,我们曾有一位同志广播过这样的想法,并持续了几年,无法接受电话之间的历史可以被调换/改变的事实。

 
Renat:

当然,我们说的是可能在电话之间进行重新分配。

问题是,一定会有人错误地或明确地保存调用之间的链接,在99%的情况下,一切都会工作,直到崩溃。之后会有预期的 "这是Metakwots的错 "的想法。

"害怕愧疚,就是不往前走"(c)。

还有一件事:对已经完成的事情感到遗憾,比没有完成的事情要好。

Renat,让我们说,我同意引用变量是一个潜在的问题来源,但这几乎可以说是任何工具的问题。有时人们会用螺丝刀戳别人。现在禁止螺丝刀是没有意义的,而简单地从生产中取消螺丝刀更是毫无意义,因为它们可以在家里制造,没有太多的问题。

"引用 "作为一个mql实体是非常可取的,甚至不是以变量的形式,而是作为一种从函数中返回引用(lvalue)的可能性。 这将允许至少为容器制作真正快速的左侧索引器,并提供各种其他附加功能,比如。

MyTree.Search(Key).GetElement() = NewVal;

而且我明白,人们会想从一个函数中返回对一个局部变量 的引用!

那又怎样?"忘掉参考资料,因为它们会使傻瓜的生活更加困难?")。

--

mql5的这种局限性(如缺乏链接)有时会强烈地促使 "逃到DLL",把MT5仅仅变成一个提供与经纪人沟通的 "市场驱动器"。 但最初的想法正好相反--消除使用外部编程工具的需要,因为"一切都在这里"。

 

由于我们的目标是实现最大的语言安全,所以没有回头路可走。

与原始链接一起工作是走向崩溃的坚实而肯定的一步。而将整个虚拟化系统取出来的程序崩溃是不允许的。

我们的决定是完全知情的。MQL5用于编写程序,这些程序 将在大量的计算机上运行,而且无需人类参与。

 

无论如何,我希望这个原则对任何需要的人来说是清楚的。我将暂时保留它,只是把它留给自己。但她会的,而且会开放。

我不需要解释,对基本类型的引用,如int,要容易得多,没有太多的问题。

导致复杂性和实施问题的唯一问题是基础变量的范围。真的有广泛的可能性。

________

嗯,为了激励自己,值得注意的是,链接打开了一整层额外的可能性,比如说包装器。

 
l值链接的计划...
 
mql5:
l值链接的计划...
伙计,你应该马上告诉我)我就不会挣扎了。但这很好。
 

向大家问好。


我想知道八年来是否有什么变化?

或者,只用msvcrt.dll和memcpy函数还是可以从OnCalculate()中获得数组地址吗?

还是每个人都在整个类结构 中 "拖动 "对数组的引用(或者说,每次都组织自己的数组并复制内容)?