错误、漏洞、问题 - 页 651

 
mql5:
不,这不仅仅是一个32位终端的问题。但是32位终端的解决方案今天已经准备好了,而在64位终端中,仍然有256Kb的堆栈限制。
但如果程序员没有使用属性手动指定所需的堆栈大小,终端中的EX5将以默认的堆栈大小(256Kb)工作。

关于大尺寸。
函数内部的每个变量声明(静态变量除外)都会在堆栈上分配空间,而为局部变量 分配堆栈空间则发生在每次调用时。

因此,如果一个函数有64Kb的局部变量,堆栈空间足够3次调用,堆栈溢出发生在4次调用时(因为堆栈的一部分被用于终端的内部需要)。因此,如果需要大量的本地数据,最好使用动态内存--当你进入函数时,本地需要的内存在系统中被分配(new, ArrayResize),当你退出函数时,内存被删除(delete, ArrayFree)。

谢谢你的详细解释。但这绝对不是我的问题。我将尝试写一个测试专家顾问来检测这个错误,因为已经找到了腿部生长的函数,而且没有这样的卷(64Kb - 256Kb)。那我晚上会派一个专家带着问题功能去服务台。

 

还有一个关于同一函数(CLBufferWrite())的工作的问题(并要求在帮助中解释)。

如果我在设置了ArrayIsSeries标志(==true)的情况下,直接从指标缓冲区 写入信息,那么输入数组将以什么方向读取?

我怀疑这个标志会被忽略,此外,也不清楚会从哪个地方读到它?移位是从阵列的物理端开始计算,还是根本就从开始计算?

当然,为了以防万一 ,我会吹水(我会用ArrayIsSeries==false来工作),但还是 ?

 
与OpenCL 缓冲区一起工作的 功能目前还不完整,将被添加到/描述中。
offset - 这些函数实际上是以字节为单位从OpenCL缓冲区开始的偏移量,传递给函数的数组将从空项复制,而不考虑ArrayIsSeries标志。
 
mql5:
1) 目前,与OpenCL缓冲区一起工作的功能还不完善,将被添加/更新。
2. offset - 这些函数实际上是一个从OpenCL缓冲区开始的字节偏移量,而传入函数的数组将从零元素开始复制,不考虑ArrayIsSeries标志。

1.我有点怀疑... :)

所以,没有办法直接从部分指标缓冲区 中写入(目前)。

当然,一个好的想法是,使源头和接收方的起始位置都可以移动。像这里。

int  ArrayCopy(
   void  dst_array[],       // куда копируем
   void  src_array[],       // откуда копируем
   int   dst_start=0,       // с какого индекса пишем в приемник
   int   src_start=0,       // с какого индекса копируем из источника
   int   cnt=WHOLE_ARRAY    // сколько элементов
   );

对于索引(方向和单位(字节/元素)),请在帮助中更加谨慎。:)))

--

谢谢你的答复,我真的很感谢你为改进功能所做的努力。

我将期待着耐心等待宴会的继续。在此期间,我必须在匕首的边缘跳舞。:)

 

Build 597 x64,刚刚安装。

2012.02.23 21:43:24 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:13 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:12 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:10 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:09 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:08 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:07 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 21:43:06 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.

这在以前从未发生过。

// Win7 x64

 
MetaDriver:

Build 597 x64,刚刚安装。

以前并不是这样的。

// Win7 x64。

尝试重新编译该例子。我检查过了--它对我有用。
 
Renat:
试着重新编译这个例子。我检查过了--它对我有用。

我已经重新编译了一百次,我要再重启一下。

 
MetaDriver:

...我要再次重启。

没有,没有任何帮助。

雷纳特

......我检查过了--它对我有效。

这对我来说也很有效,但每隔十或四十个周期我就会收到同样的垃圾。

2012.02.23 23 16:44 OpenCLTest (EURUSD,M30) SaveBitmapToFile错误,打开'Mandelbrot.bmp'。
2012.02.23 23 16:16:43 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 23 16:16:42 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
2012.02.23 23 16:16:36 OpenCLTest (EURUSD,M30) SaveBitmapToFile error opening 'Mandelbrot.bmp'.
 
MetaDriver:

没有,没有任何帮助。

这对我来说也很有效,但每隔十或四十个周期,我就会收到这种垃圾。

还发现。

这是因为指定的文件在两个不同的线程中处理,没有同步,偶尔文件 会被锁定。

  1. 脚本线程每秒覆盖文件10次(取决于卡的速度)。
  2. 图表根据脚本的要求重新加载其线程中的图片

因为用图像做例子只是为了演示用OpenCL工作的原理,所以这不是一个问题。

Документация по MQL5: Файловые операции / FileMove
Документация по MQL5: Файловые операции / FileMove
  • www.mql5.com
Файловые операции / FileMove - Документация по MQL5
 
Renat:

由于带图的例子只是为了演示使用OpenCL的工作原理,所以这并不是一个问题。

我同意,另外,反正现在是直接向GraphLabel对象的缓冲区进行转移的时候了。:)