什么原因导致mql4中的堆栈溢出错误? - 页 3

 
RaptorUK:
但它可以处理那么大的一个函数 ......正如我所解释的,改变函数类型,对于同样大小的函数就不会出现编译错误 ......


那么这是否意味着一个int函数 需要更多的资源来执行?也许那时元引号可以使init、deinit和start成为void,所以它们消耗的资源更少。
 
RaptorUK:
但它可以处理那么大的一个函数 ......正如我所解释的,改变函数类型,对于同样大小的函数就不会出现编译错误 ......

......或者让它成为一个int,并留下return(0);对所有的调用都这样做 ......

   ReturnedValue = ObCreate("EURUSDg",Column1xg,15,ZoomTimes);
   ReturnedValue = ObCreate("EURUSDa",Column1xa,15,ZoomTimes);

. . .其中ReturnedValue是一个int. .你猜怎么着? 没有编译错误。


让你的代码有意义 ...... 嘿,就像变魔术一样,错误消失了,奇怪吧?

 
一个返回0的int函数 应该与一个void函数相当,所以这意味着有一些东西。
 
tonny:

那么这是否意味着一个int函数需要更多的资源来执行?也许元引号可以使init、deinit和start都是无效的,所以它们消耗的资源更少。
当然,一个int 函数 需要更多的资源来执行......它需要返回一个值,这个值必须存储在内存中才能被返回。我见过有人在代码中把init、start和deinit声明为void ......这不是我做的。
 
RaptorUK:

......或者让它成为一个int,并留下return(0);对所有的调用都这样做 ......

. . .其中ReturnedValue是一个int. .你猜怎么着? 没有编译错误。


让你的代码有意义 ... ...然后嘿嘿,就像变魔术一样,错误消失了,很奇怪吧?


总之问题解决了,但我认为错误出现在不应该出现的地方。
 
tonny:
一个返回0的int函数应该可以和一个void函数相提并论,所以这意味着有东西。
不是的 ......无效函数 不会返回一个值 ......0、1、10000的值都需要相同的内存空间来保存 ......它们都是int 类型,一个int 使用4个字节。 void不返回任何东西,这需要0个字节。. .
 
这意味着即使有了void,如果我们增加更多的对象,也会达到压力点并再次导致错误。我们同意吗?
 
我把沉默当作是。结案。
 
tonny:
这意味着即使有了void,如果我们增加更多的对象,也会达到压力点并再次导致错误。我们同意吗?
不,我不同意。

但看来你可能是对的。
 
RaptorUK:
不,我不同意。

看来你可能是对的......。

现在我们在同一起跑线上了。