错误、漏洞、问题 - 页 786

 

其中一个指标的.ex5与之前编译的.ex5相比,大小增加了近10倍。嗯,这不是一个问题。但在绘制指标时出现了一个错误(在输入参数之前)。

2012.07.27 02:53:57     MP2012_GRI (EURUSD,M30) Access violation read to 0x000000003FF39D25

I've already fixed 3/4 code.而如果我再次评论出一点,我就会得到它(连同上面的错误)。

2012.07.27 02:56:42     Custom Indicator        'MP2012_GRI' may work incorrectly, as it requires more than 256Kb of stack memory
而它真的没有用

如果我再次注释一下,前两个错误就会消失,但我在卸载指标 时就会出现这些错误。

2012.07.27 02:47:35     MP2012_GRI (EURUSD,M30) 9 leaked strings left
(数字可能不同--取决于我注释了多少代码)

我事先发现,我的功能按体积来说太大了--我会在小功能上打败它。

......而在上一次构建中,一切都很正常

 
notused:

其中一个指标的.ex5与之前编译的.ex5相比,大小增加了近10倍。嗯,这不是一个问题。但在绘制指标时出现了一个错误(在输入参数之前)。

I've already fixed 3/4 code.如果我再改一下,我就会得到(与上面的错误一起)。

为了提高安全性,我们加强了对沙盒环境的控制。

关于堆栈的信息告诉你,你在一个函数中使用了超过256千字节的堆栈,这是编程中的一个严重问题。例如,在C/C++中,使用一个局部堆栈函数,即使是16Kb也被认为是一个严重的警告。

例如,你可能在函数中分配了很多静态数组。

void func(void)
  {
   double arr1[128000];
   double arr2[128000];
   double arr3[128000];

  }

你一定不要这样做。

如果你需要大型数组,最好使用动态数组。比如说。

double ExtArr[];

void func(void)
  {
   double arr1[];
   double arr2[];

   ArrayResize(ExtArr,128000,0);
   ArrayResize(arr1,128000,0);
   ArrayResize(arr2,128000,0);
  }
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
Документация по MQL5: Основы языка / Типы данных / Объект динамического массива
  • www.mql5.com
Основы языка / Типы данных / Объект динамического массива - Документация по MQL5
 
Renat:

为了提高安全性,我们加强了对沙盒环境的控制。

关于堆栈的信息告诉你,你在堆栈的一个函数中使用了超过256千字节,这在编程中是一个严重的问题。例如,在C/C++中,在一个函数中使用局部堆栈,即使是16kb,也被认为是一个严重的警告。

例如,你可能在函数中分配了很多静态数组。

你不应该这样做。

如果你需要大型数组,请使用动态数 组来代替。比如说。

我在这个指标中完全不使用静态数组;我在函数中不传递比int更重的东西,等等。但你积极使用各种图形函数。

比如说。

   ObjectSetString(0, stmp, OBJPROP_TEXT, "HB");
   ObjectSetInteger(0, stmp, OBJPROP_COLOR, hbColor);

如果最后一行被注释掉,一切都会好起来。问题是,我们有很多这样的电话,而这一个

ObjectSetInteger(0, stmp, OBJPROP_COLOR, hbColor);

是连续的第20或30次。

我认为问题在于函数的大小,因为注释代码可以避免这个问题,而大部分的代码由ObjectSetXXX组成。我通过实验发现,把它分成小的部分也是没有用的--一个积极的inliner仍然会把所有的东西堆积起来,产生错误。我可以试着放出更多的代码,但我明天再做。如果我们不早点弄清楚的话,服务台也在明天。

 
notused:

在这个指标中,我根本不使用静态数组;我不把比int更重的东西传给函数,等等。但各种图形功能都在积极使用。

但有一个巨大的东西,不是吗?

例如,包括一个类的本地拷贝,该类的成员中只是有一大堆静态数组。这通常是当地堆栈消费者的存款的藏身之处。


比如说。

如果最后一行被注释掉,一切都会好起来。问题是,我们有很多这样的电话,而这一个

是连续的第20或30次。

我认为问题出在函数的大小上,因为注释代码可以避免这个问题,而大部分的代码都是由ObjectSetXXX组成。我通过实验发现,把它分成小的部分也是没有用的--一个积极的inliner仍然会把所有的东西堆积起来,产生错误。我可以试着放出更多的代码,但我明天再做。如果我们之前没有搞清楚的话,明天也要去服务台。

划分职能,堆积成类。

Inliner很可能与此无关--它不会插入太大的代码块。特别是如果他们是重度的/大量的局部变量

 
Renat:

但有一个巨大的东西,不是吗?

例如,包括一个类的本地拷贝,该类的成员中只是有一大堆静态数组。这通常是当地堆栈消费者的存款的藏身之处。


划分职能,堆积成类。

Inliner可能与此无关--它不会插入太大块的代码。特别是如果他们有大量/大量的局部变量

服务台 #444495
 

为什么会这样呢?"马虎 "的支付或什么!只有1个代理赚了1克朗,每天有0.3克朗的赔付!"。


 

一定要用这些标题写到servicedesk

终端版本和比特率

...

问题描述

...

行动的顺序...

...

获得的结果...

...

预期的结果...

...

额外信息...

...

或者你能用你自己的话说吗?

 
Zeleniy:

或者你能用你自己的话说清楚吗?

列出一个清单会更好。这将使处理该错误的人的生活轻松很多。
 
Zeleniy:

你必须用这些标题写信给Servicedesk 吗?


或者我可以用自己的语言来做吗?

你可以用你自己的话来做,但

终端版本和比特率
问题描述

操作顺序
获得的结果
预期的结果

必然。

------------

你不是在写一篇关于自由主题的文章,你是在为一个开发者写一篇文章,他应该在没有任何细节的情况下迅速了解你想从他那里得到什么。

 
sergeev:

你可以做所有你自己的,但

终端版本和比特率
问题描述

操作顺序
获得的结果
预期的结果

必然。

------------

你不是在写一篇关于自由主题的文章,你是在为一个开发者写一篇文章,他应该在没有任何细节的情况下迅速了解你想从他那里得到什么。

我选择了Site mql5.com提案 部分,现在我不明白如何将其附加到标题上。