错误、漏洞、问题 - 页 1648 1...164116421643164416451646164716481649165016511652165316541655...3184 新评论 TheXpert 2016.08.24 07:43 #16471 Alexey Navoykov: 目前的0不是这样的吗? Alexey Navoykov 2016.08.24 07:49 #16472 Комбинатор: 目前的0不是这样的吗?总的来说,那里有很多混乱,我们无法知道为数组分配的内存 的真实大小来检查它和优化它。 Alexey Navoykov 2016.08.24 07:54 #16473 或者说下面这种情况。 首先ArrayResize(arr, 10, 100); 然后ArrayCopy(arr, arr2, 0, 0, 20); 为数组保留的内存大小是否会减少? TheXpert 2016.08.24 08:05 #16474 Alexey Navoykov:如果我没有记错的话,即使明确给出一个较小的数字,储备规模也不会减少。错了。从帮助的例子来看,0确实可以作为0,那么-1的建议就很有意义了。 Alexey Navoykov 2016.08.24 08:16 #16475 顺便说一下,我对reserve_size的推理不太正确。 事实上,它只是reserve变化的一个步骤,但不是reserve本身。 也就是说,它可能没有被存储在任何地方。 但分配的内存的 总大小是已知的。 我们希望以某种方式知道它,最好是直接管理它。 而我将重新表述我对ArrayResize的建议如下:当指定reserve_size=-1时,如果size参数位于这个范围内,函数必须不改变分配给数组的内存大小。 如果size>容量,缓冲区当然会增长。 Ilyas 2016.08.24 09:08 #16476 数组("internal")存储了该数组 被分配到多少个元素。 与分配的工作逻辑(条件代码)。ArrayResize(arr,int size,int reserve) { if(arr.allocated<size) if(!ArrayAllocateMemory(arr,size+reserve)) // -> arr.allocated=size+reserve; return(-1); //--- CallConstructorsOrDestructors(arr,size); //--- arr.size=size; return(size); } Alexey Navoykov 2016.08.24 09:36 #16477 Ilyas: 数组("internal")存储了该数组 被分配到多少个元素。 与分配的工作逻辑(条件代码)。我明白了,谢谢你。 在开始时,这个分配值等于-1,还是不等于? 也就是说,在最初调用ArrayResize(arr, 0, 100)时,分配值会是多少? Ilyas 2016.08.24 10:13 #16478 Alexey Navoykov:这个分配在开始时是否等于-1,或者不等于? 等于0阿列克谢-纳沃伊科夫。也就是说,当ArrayResize(arr, 0, 100)最初被调用时,会发生分配吗? 只有当数组的大小 向上变化时,才会发生分配。在这种情况下,数组的大小并没有改变,因为它等于0。 A100 2016.08.24 11:12 #16479 FVitalii Ananev: 不同的是,在第一种情况下,没有错误 :) 而在这两种情况下,为什么C2C++中没有错误?(关于C2C++与此有关的答案见上文) Sergei Vladimirov 2016.08.24 13:31 #16480 如何从受信任名单中删除一个URL?帮助文本说:"要从受信任的列表中删除一个地址,选择它并按 "删除 "按钮",但没有这样的按钮。 1...164116421643164416451646164716481649165016511652165316541655...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
目前的0不是这样的吗?
总的来说,那里有很多混乱,我们无法知道为数组分配的内存 的真实大小来检查它和优化它。
如果我没有记错的话,即使明确给出一个较小的数字,储备规模也不会减少。
错了。从帮助的例子来看,0确实可以作为0,那么-1的建议就很有意义了。
而我将重新表述我对ArrayResize的建议如下:当指定reserve_size=-1时,如果size参数位于这个范围内,函数必须不改变分配给数组的内存大小。 如果size>容量,缓冲区当然会增长。
与分配的工作逻辑(条件代码)。
数组("internal")存储了该数组 被分配到多少个元素。
与分配的工作逻辑(条件代码)。
我明白了,谢谢你。 在开始时,这个分配值等于-1,还是不等于? 也就是说,在最初调用ArrayResize(arr, 0, 100)时,分配值会是多少?
这个分配在开始时是否等于-1,或者不等于?
也就是说,当ArrayResize(arr, 0, 100)最初被调用时,会发生分配吗?
只有当数组的大小 向上变化时,才会发生分配。在这种情况下,数组的大小并没有改变,因为它等于0。
不同的是,在第一种情况下,没有错误 :)