StringSplit()是一个神奇的函数,比如可以这样用《使用StringSplit()检查按钮是否按下》,但它会造成内存泄露!
发现经过,我编的内存跟单工具EA一直发生如下错误提示:
一直困惑不解,度娘一大堆也没用,今天偶尔发现mql5官网上也有一个帖子对此有抱怨,有个网友热心解答,可能跟StringSplit()有关。
联想到该函数使用了一个动态string型的数组(result[])来储存结果,参照如下官网说明,
我们可以注意到一个事实,这个官方示例没有提示:使用完之后,要及时关闭它!
我的这个工具EA有两处使用了StringSplit(),再加上它是string型的动态数组,只要是动态数组就是内存泄露的高危发生源,报错也是string泄露,所以初步判定它就是罪魁祸首!
解决办法:使用ArrayFree(result)即可。


发表评论