新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1005 1...9989991000100110021003100410051006100710081009101010111012...1953 新评论 Seric29 2019.11.26 19:40 #10041 下面是它的工作原理。 Artyom Trishkin 2019.11.26 20:04 #10042 Seric29: 下面是它的工作原理。 伊利亚斯已经解释得很清楚了。在他的帖子里找找看。 Alexey Viktorov 2019.11.26 20:28 #10043 Seric29: 下面是它的工作原理。 你确定你已经阅读了文档中的所有内容吗?你甚至读过这个。 注意事项 该函数只能应用于动态数组。 你应该记住,由SetIndexBuffer()函数分配为指标缓冲区的动态数组不能被调整大小。所有与调整指标缓冲区大小有关的操作都由终端的执行子系统执行。 一个数组中的元素总数不能超过2147483647。 如果经常分配内存,建议使用第三个参数指定储备,以减少物理内存的分配量。所有对 ArrayResize函数的后续调用 都 不会导致物理内存的重新分配,只是在保留的内存中对数组的第一维进行了调整。 请记住,第三个参数只在物理内存分配过程中使用,比如说。 ArrayResize(arr,1000,1000);for(int i=1;i<3000;i++)ArrayResize(arr,i,1000)。 在这种情况下,将有2次内存重新分配,一次是在进入3000次迭代的循环之前,数组维度设置为1000,第二次是在i等于2000时。如果省略第三个参数,将有2000个物理内存的重新分配,这将减慢程序的执行。 有什么不清楚的地方? Seric29 2019.11.26 21:51 #10044 Alexey Viktorov:你确定你已经阅读了文档中的所有内容吗?甚至读到这个。这有什么不清楚的? 好吧,这就是问题的关键,没有图片或例子,你可以猜测这些重新分配的意思,如果没有解释,如何100%按照开发者的想法使用它。从这里写的这3行来看,我认为ArrayResize(arr,1000,1000); 创建了一个有2000个元素的数组。但这里并不清楚。如果我做ArrayResize(arr,1,1000); 例如,1000会空转,直到数组到了1000。 for(int i=1;i<1001;i++)ArrayResize(массив,i,1000); 或者程序会在超频前使用这个片段,只是将计数器递增。在一般情况下,我说这是不清楚的,就这样。 或者这1000个它只是愚蠢的躺在那里,迅速从处理器中舀出内存,如果是这样,那么所有的和备份内存,也将不得不转移,那么它更容易工作,没有储备。一般来说,没有代码,没有信息,没有图片,不知道如何工作。 Yevhenii Levchenko 2019.11.27 06:44 #10045 你是否遇到过这种情况,即硬盘被某种系统类100%加载(在10ka上)?这也发生在阿尔卑斯山的终端...通常终端在测试时加载磁盘,但在这里只是kabbda...时间不长,3-5秒,但很具体 Igor Makanu 2019.11.27 07:15 #10046 Yevhenii Levchenko: 你是否曾经发生过这种情况,你的硬盘100%启动系统类的某种(在10上)?这也发生在阿尔卑斯山的终端...通常终端在测试时加载磁盘,但在这里只是kabbda...时间不长,3-5秒,但很具体 发生,但在电脑重新启动后 在电脑重启后的10-15分钟内,Windows Defender会 "吃掉磁盘 "并收集电脑使用情况的统计数据。 解决办法--暂停电脑,我的电脑可以一个月不重启,我按下键盘上的睡眠按钮,而不是关闭电脑--有几次停电了,如果电脑处于睡眠状态,Win10的启动没有问题。 Alexey Viktorov 2019.11.27 08:03 #10047 Seric29: 这就是问题所在,没有图片或例子,你可以猜测这些重新分配的意思,如果没有解释的话,如何100%按照开发者的想法使用它。 从这里写的这3行来看,我认为ArrayResize(arr,1000,1000); 创建了一个有2000个元素的数组。但这里并不清楚。如果我做ArrayResize(arr,1,1000); 例如,1000会空转,直到数组到了1000。 或者程序会在超频前使用这个片段,只是将计数器递增。或者这1000块钱只是躺着从CPU上快速获取内存,如果是这样,那么备份内存也要转移,那么没有备份就更容易工作了。一般来说,没有代码,没有信息,没有图片,不知道如何工作。 你不仅应该阅读这三行代码,还应该阅读解释一切的文字,这是很清楚的。 保留内存和阵列大小是不同的概念。如果你用ArrayResize(arr,1000,1000) 覆盖了数组的大小;最后一个数组元素 将是999,而不是更多。但是如果你需要增加阵列的大小,就不会有内存的重新分配。如果你不需要这样的阵列大小的储备,那就把它做得小一点,或者根本就不储备。 Nauris Zukas 2019.11.27 09:25 #10048 下午好! 我想把一个参数作为一个数组 放在一个函数 中。 我想不出怎么做才对。你能纠正这个例子吗? void OnTick() { //--- int TestArr[]= {5,3,9,4}; TestFArr(TestArr[]); } //+------------------------------------------------------------------+ void TestFArr(int TestArr[]) { int size=ArraySize(TestArr); Print(" --------------- size: ",size); } //+------------------------------------------------------------------+ Artyom Trishkin 2019.11.27 09:32 #10049 Nauris Zukas: 下午好! 我想把一个参数作为一个数组 放在一个函数 中。我想不出怎么做才对。你能纠正这个例子吗? void OnTick() { //--- int TestArr[]= {5,3,9,4}; TestFArr(TestArr); } //+------------------------------------------------------------------+ void TestFArr(int & TestArr[]) { int size=ArraySize(TestArr); Print(" --------------- size: ",size); } //+------------------------------------------------------------------+ Nauris Zukas 2019.11.27 09:51 #10050 Artyom Trishkin: 谢谢你! 1...9989991000100110021003100410051006100710081009101010111012...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
下面是它的工作原理。
下面是它的工作原理。
你确定你已经阅读了文档中的所有内容吗?你甚至读过这个。
注意事项
该函数只能应用于动态数组。 你应该记住,由SetIndexBuffer()函数分配为指标缓冲区的动态数组不能被调整大小。所有与调整指标缓冲区大小有关的操作都由终端的执行子系统执行。
一个数组中的元素总数不能超过2147483647。
如果经常分配内存,建议使用第三个参数指定储备,以减少物理内存的分配量。所有对 ArrayResize函数的后续调用 都 不会导致物理内存的重新分配,只是在保留的内存中对数组的第一维进行了调整。 请记住,第三个参数只在物理内存分配过程中使用,比如说。
ArrayResize(arr,1000,1000);
for(int i=1;i<3000;i++)
ArrayResize(arr,i,1000)。
在这种情况下,将有2次内存重新分配,一次是在进入3000次迭代的循环之前,数组维度设置为1000,第二次是在i等于2000时。如果省略第三个参数,将有2000个物理内存的重新分配,这将减慢程序的执行。
有什么不清楚的地方?
你确定你已经阅读了文档中的所有内容吗?甚至读到这个。
这有什么不清楚的?
好吧,这就是问题的关键,没有图片或例子,你可以猜测这些重新分配的意思,如果没有解释,如何100%按照开发者的想法使用它。从这里写的这3行来看,我认为ArrayResize(arr,1000,1000); 创建了一个有2000个元素的数组。但这里并不清楚。如果我做ArrayResize(arr,1,1000); 例如,1000会空转,直到数组到了1000。
或者程序会在超频前使用这个片段,只是将计数器递增。在一般情况下,我说这是不清楚的,就这样。 或者这1000个它只是愚蠢的躺在那里,迅速从处理器中舀出内存,如果是这样,那么所有的和备份内存,也将不得不转移,那么它更容易工作,没有储备。一般来说,没有代码,没有信息,没有图片,不知道如何工作。
你是否曾经发生过这种情况,你的硬盘100%启动系统类的某种(在10上)?这也发生在阿尔卑斯山的终端...通常终端在测试时加载磁盘,但在这里只是kabbda...时间不长,3-5秒,但很具体
发生,但在电脑重新启动后
在电脑重启后的10-15分钟内,Windows Defender会 "吃掉磁盘 "并收集电脑使用情况的统计数据。
解决办法--暂停电脑,我的电脑可以一个月不重启,我按下键盘上的睡眠按钮,而不是关闭电脑--有几次停电了,如果电脑处于睡眠状态,Win10的启动没有问题。
这就是问题所在,没有图片或例子,你可以猜测这些重新分配的意思,如果没有解释的话,如何100%按照开发者的想法使用它。 从这里写的这3行来看,我认为ArrayResize(arr,1000,1000); 创建了一个有2000个元素的数组。但这里并不清楚。如果我做ArrayResize(arr,1,1000); 例如,1000会空转,直到数组到了1000。
或者程序会在超频前使用这个片段,只是将计数器递增。或者这1000块钱只是躺着从CPU上快速获取内存,如果是这样,那么备份内存也要转移,那么没有备份就更容易工作了。一般来说,没有代码,没有信息,没有图片,不知道如何工作。
你不仅应该阅读这三行代码,还应该阅读解释一切的文字,这是很清楚的。
保留内存和阵列大小是不同的概念。如果你用ArrayResize(arr,1000,1000) 覆盖了数组的大小;最后一个数组元素 将是999,而不是更多。但是如果你需要增加阵列的大小,就不会有内存的重新分配。如果你不需要这样的阵列大小的储备,那就把它做得小一点,或者根本就不储备。
下午好!
我想把一个参数作为一个数组 放在一个函数 中。 我想不出怎么做才对。你能纠正这个例子吗?
下午好!
我想把一个参数作为一个数组 放在一个函数 中。我想不出怎么做才对。你能纠正这个例子吗?
谢谢你!