错误、漏洞、问题 - 页 2571 1...256425652566256725682569257025712572257325742575257625772578...3184 新评论 Roman 2019.09.20 16:39 #25701 脚本完成后,专家日志的警告是什么意思? 2 leaked strings left 如何才能解决这个问题? 翻译员翻译,左边有两个泄露的字符串。但这并不清楚,在什么的左边,字符串? 该脚本使用JAson 库。 通过memcpy_s从dll收到一个Json字符串,在dll中这个字符串的类型是 const wchar_t*。 在导出函数的#import参数中,声明为string& str,即通过引用,而string本身声明为string str。 然后字符串str被反序列化 js.Deserialize(str); 问题正是从memcpy_s传入的字符串的反序列化。 因为如果你在脚本中创建一个json检查字符串 string str = "{\"s\":\"1000\"}"; 那么警告信息就不会出现。 从dll中反序列化一个字符串,脚本完成后又出现警告信息,还剩2个泄漏的字符串 我尝试将字符串转换为char数组StringToCharArray,并反序列化char数组。 但问题仍然存在,出现了2个泄漏的字符串。 这方面的原因可能是什么? Roman 2019.09.20 19:57 #25702 从dll中,我试着明确传递检查json字符串L"{\"s\":\"1000\"}"剩余2个泄漏字符串 的警告已经消失了。 结果发现,dll中一个读取网络数据的函数导致了这种行为。 但我不明白剩下的2条漏网 之鱼的解释,它到底是什么意思,在哪里进一步挖掘? Artyom Trishkin 2019.09.20 22:34 #25703 Roman: 从dll中,我试着明确传递检查json字符串 ,剩下的2个泄漏字符串 的警告已经消失了。 事实证明,dll中读取网络数据的功能导致了这种行为。 但我不明白剩下的2条漏网 之鱼的解释,它到底是什么意思,要在哪里进一步挖掘? 如果松散地翻译,那么。"2行导致内存泄漏"。 从字面上看,它的意思大约是:目前还剩下2根琴弦。 Aleksei Beliakov 2019.09.21 03:35 #25704 在最新的mt4测试版中,iHigh,iTime功能 对日线以上的框架不起作用。 iHigh(NULL,PERIOD_W1,0) = 0 iTime(NULL,PERIOD_W1,0) = NULL Roman 2019.09.21 10:59 #25705 Artyom Trishkin: 如果松散地翻译,那么。"2行导致内存泄漏"。 而从字面上看,是这样的:剩下2条电流线。 有趣的是,当我得到一个Json字符串,并且不对其进行反序列化,而是将其原封不动地输出到注释中,就不会有任何泄漏。 当我开始反序列化以获得Json字符串元素时,它开始泄漏。 目前还不清楚,图书馆是否漏水... Vladimir Simakov 2019.09.21 11:31 #25706 Roman:有趣的是,当我得到一个Json字符串,并且不对其进行反序列化,而是将其原封不动地输出到注释中时,就不会出现泄漏。 当我开始反序列化以获得Json字符串元素时,它开始泄漏。 我不知道图书馆是否在漏水... 它在漏水。字符串的内存 被分配,字节被复制,但内存没有被清空。 有源代码吗? 赞扬开发者的内存管理器,以保持对这一点的跟踪。 Roman 2019.09.21 11:41 #25707 Vladimir Simakov: 它正在漏水。字符串的内存被分配,字节被复制,但内存没有被清空。 你有源代码吗? 赞扬开发者的内存管理器,它能保持对这一点的跟踪。 该库似乎在Deserialize类方法中调用Clear()。 virtual bool Deserialize (string js, int acp = CP_ACP) { int i = 0; Clear (); CJAVal::code_page = acp; char arr []; int slen = StringToCharArray (js, arr, 0, WHOLE_ARRAY, CJAVal::code_page); return Deserialize (arr, slen, i); } 我从这里得到了 源代码。 Vladimir Simakov 2019.09.21 11:56 #25708 Roman: 该库在Deserialize类方法中调用Clear()。 源代码取自这里。 漏洞不在那里,但很可能在那个dll中,你从那里得到了字符串。 [删除] 2019.09.21 12:15 #25709 Roman: 看起来在库中,在Deserialize类的方法中,Clear()被调用。 我从这里得到了 源代码。 你如何创建CJVal? 可能是新的CJVal()? 漏洞不在那里,但很可能在那个dll中,你从那里得到了字符串。 终端不太可能捕捉到这一点。 Roman 2019.09.21 12:18 #25710 Vladimir Simakov: 漏洞不在这里,而很可能是在你获取字符串的dll中。 我还有一个印象,就是读取数据的函数在泄露。 据lib开发者称,它首先对数据进行缓冲,然后进行传输,传输完毕后,缓冲区被清空。 但似乎在缓冲区清理方面有一个错误。 但有趣的是,如果我们不在脚本中反序列化字符串,就不会有泄漏,也就是说,问题发生在脚本中反序列化的那一刻。 只是检查可能的原因的不同变体。 不幸的是,没有源代码,因为.lib已经关闭。 1...256425652566256725682569257025712572257325742575257625772578...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
2 leaked strings left
如何才能解决这个问题?
翻译员翻译,左边有两个泄露的字符串。但这并不清楚,在什么的左边,字符串?
该脚本使用JAson 库。
通过memcpy_s从dll收到一个Json字符串,在dll中这个字符串的类型是 const wchar_t*。
在导出函数的#import参数中,声明为string& str,即通过引用,而string本身声明为string str。
然后字符串str被反序列化
问题正是从memcpy_s传入的字符串的反序列化。
因为如果你在脚本中创建一个json检查字符串
那么警告信息就不会出现。
从dll中反序列化一个字符串,脚本完成后又出现警告信息,还剩2个泄漏的字符串
我尝试将字符串转换为char数组StringToCharArray,并反序列化char数组。
但问题仍然存在,出现了2个泄漏的字符串。
这方面的原因可能是什么?
L"{\"s\":\"1000\"}"
剩余2个泄漏字符串 的警告已经消失了。结果发现,dll中一个读取网络数据的函数导致了这种行为。
但我不明白剩下的2条漏网 之鱼的解释,它到底是什么意思,在哪里进一步挖掘?
从dll中,我试着明确传递检查json字符串
,剩下的2个泄漏字符串 的警告已经消失了。
事实证明,dll中读取网络数据的功能导致了这种行为。
但我不明白剩下的2条漏网 之鱼的解释,它到底是什么意思,要在哪里进一步挖掘?
如果松散地翻译,那么。"2行导致内存泄漏"。
从字面上看,它的意思大约是:目前还剩下2根琴弦。
在最新的mt4测试版中,iHigh,iTime功能 对日线以上的框架不起作用。
如果松散地翻译,那么。"2行导致内存泄漏"。
而从字面上看,是这样的:剩下2条电流线。
有趣的是,当我得到一个Json字符串,并且不对其进行反序列化,而是将其原封不动地输出到注释中,就不会有任何泄漏。
当我开始反序列化以获得Json字符串元素时,它开始泄漏。
目前还不清楚,图书馆是否漏水...
有趣的是,当我得到一个Json字符串,并且不对其进行反序列化,而是将其原封不动地输出到注释中时,就不会出现泄漏。
当我开始反序列化以获得Json字符串元素时,它开始泄漏。
我不知道图书馆是否在漏水...
它在漏水。字符串的内存 被分配,字节被复制,但内存没有被清空。
有源代码吗?
赞扬开发者的内存管理器,以保持对这一点的跟踪。
它正在漏水。字符串的内存被分配,字节被复制,但内存没有被清空。
你有源代码吗?
赞扬开发者的内存管理器,它能保持对这一点的跟踪。
该库似乎在Deserialize类方法中调用Clear()。
我从这里得到了 源代码。
该库在Deserialize类方法中调用Clear()。
源代码取自这里。
漏洞不在那里,但很可能在那个dll中,你从那里得到了字符串。
看起来在库中,在Deserialize类的方法中,Clear()被调用。
我从这里得到了 源代码。
你如何创建CJVal? 可能是新的CJVal()?
漏洞不在那里,但很可能在那个dll中,你从那里得到了字符串。
漏洞不在这里,而很可能是在你获取字符串的dll中。
我还有一个印象,就是读取数据的函数在泄露。
据lib开发者称,它首先对数据进行缓冲,然后进行传输,传输完毕后,缓冲区被清空。
但似乎在缓冲区清理方面有一个错误。
但有趣的是,如果我们不在脚本中反序列化字符串,就不会有泄漏,也就是说,问题发生在脚本中反序列化的那一刻。
只是检查可能的原因的不同变体。
不幸的是,没有源代码,因为.lib已经关闭。