エラー、バグ、質問 - ページ 2571 1...256425652566256725682569257025712572257325742575257625772578...3185 新しいコメント Roman 2019.09.20 18:39 #25701 スクリプト終了後のエキスパートログの警告はどのような意味ですか? 2 leaked strings left これはどうしたら直るのでしょうか? 翻訳者が訳すと、左の文字列が2つ漏れている。しかし、左側が何なのかがはっきりしない、文字列? このスクリプトは、JAson ライブラリを使用しています。 Json 文字列は memcpy_s を介して dll から受け取られ、dll ではこの文字列は const wchar_t* 型である。 エクスポートされる関数の#importパラメータでは、参照によって文字列&strとして宣言され、文字列自体は文字列 strとして宣言されています。 そして、文字列 str はデシリアライズされます js.Deserialize(str); 問題は、まさにmemcpy_sから入力される文字列のデシリアライゼーションです。 スクリプトでjsonのチェック文字列を作成した場合なので string str = "{\"s\":\"1000\"}"; という警告メッセージが表示されない。 dllから文字列をデシリアライズすると、スクリプト終了後に再び警告メッセージが表示される、リークした文字列は残り2個 文字列を文字列配列StringToCharArrayに変換し、文字列配列をデシリアライズしてみました。 しかし、問題は解決せず、残り2本のリークストリングが出現。 その理由は何でしょうか。 Roman 2019.09.20 21:57 #25702 dllから、明示的にcheck json stringL"{\"s\":\"1000\"}" The2 leaked strings leftwarningが消えました。 ネットワークデータを読み込むDLL内の関数がこの動作を引き起こすことが判明しました。 しかし、流出した弦が残り2 本という解釈が よくわからないのですが、具体的に どういうことなのか、さらにどこを掘 ればいいのでしょうか? Artyom Trishkin 2019.09.21 00:34 #25703 Roman: dllから、明示的にcheck json stringを渡してみた 漏れた文字列が2 つ残っている警告は 消えました。 ネットワークデータを読み込むDLL内の関数がそのような挙動を引き起こすことが判明しました。 しかし、流出した弦が残り2 本という解釈が よくわからないのですが、具体的に どういうことで、さらにどこを 掘ればいいのでしょうか? 緩やかに訳すなら。"2行でメモリリークを起こす"。 文字通り、「現在の文字列が残り2本」という程度の意味です。 Aleksei Beliakov 2019.09.21 05:35 #25704 mt4の最新ビルドのテスターでは、iHigh,iTime関数が 日足より上のフレームでは動作しない。 iHigh(NULL,PERIOD_W1,0) = 0 iTime(NULL,PERIOD_W1,0) = NULL Roman 2019.09.21 12:59 #25705 Artyom Trishkin: 緩やかに訳すなら。"2行でメモリリークを起こす"。 そして文字通り、現在の2行が残っている、という感じです。 面白いのは、Jsonの文字列を取得して、デシリアライズせずにそのままコメントに出力すると、漏れがないことです。 それをデシリアライズしてJson文字列要素を取得し始めると、リークが始まる。 図書館から漏れているのか、はっきりしない...。 Vladimir Simakov 2019.09.21 13:31 #25706 Roman:面白いのは、Jsonの文字列を取得して、デシリアライズせずにそのままコメントに出力すると、漏れがないことです。 Jsonの文字列要素を取得するためにデシリアライズを開始すると、リークし始めます。 図書館から漏れたりしないかな...。 漏れている文字列のメモリが 確保され、バイトがコピーされるが、メモリはクリアされない。 ソースコードをお持ちですか? これを記録するメモリーマネージャーを開発した開発者に拍手です。 Roman 2019.09.21 13: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 13:56 #25708 Roman: ライブラリはDeserializeクラスのメソッドでClear()を呼び出します。 ソースコードはここから 引用しました。 リークはそこではなく、そのDLLにあり、そこから文字列を取得している可能性が高いです。 削除済み 2019.09.21 14:15 #25709 Roman: ライブラリの中で、Deserializeクラスのメソッドの中で、Clear()が呼ばれているようです。 ソースコードはここから 入手しました。 CJValはどのように作成するのですか? おそらく、新しいCJVal()でしょう? リークはそこではなく、そのDLLにあり、そこから文字列を取得している可能性が高いです。 端末がこれをキャッチすることはまずない。 Roman 2019.09.21 14:18 #25710 Vladimir Simakov: リークはそこではなく、文字列を取得するDLLにある可能性が高いです。 また、データを読み出す関数が漏れている印象もあります。 最初にデータをバッファリングしてから転送し、転送後はバッファをクリアする、とlibの開発元は言っている。 しかし、バッファークリアーにバグがあるようです。 しかし、興味深いことに、スクリプト内で文字列をデシリアライズしなければ、リークは発生しない。つまり、問題はスクリプト内でデシリアライズした瞬間に発生するのだ。 ただ、考えられる原因について、さまざまなバリエーションを確認しています。.libは閉鎖されているため、残念ながらソースコードはありません 1...256425652566256725682569257025712572257325742575257625772578...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
2 leaked strings leftこれはどうしたら直るのでしょうか?
翻訳者が訳すと、左の文字列が2つ漏れている。しかし、左側が何なのかがはっきりしない、文字列?
このスクリプトは、JAson ライブラリを使用しています。
Json 文字列は memcpy_s を介して dll から受け取られ、dll ではこの文字列は const wchar_t* 型である。
エクスポートされる関数の#importパラメータでは、参照によって文字列&strとして宣言され、文字列自体は文字列 strとして宣言されています。
そして、文字列 str はデシリアライズされます
問題は、まさにmemcpy_sから入力される文字列のデシリアライゼーションです。
スクリプトでjsonのチェック文字列を作成した場合なので
という警告メッセージが表示されない。
dllから文字列をデシリアライズすると、スクリプト終了後に再び警告メッセージが表示される、リークした文字列は残り2個
文字列を文字列配列StringToCharArrayに変換し、文字列配列をデシリアライズしてみました。
しかし、問題は解決せず、残り2本のリークストリングが出現。
その理由は何でしょうか。
L"{\"s\":\"1000\"}"The2 leaked strings leftwarningが消えました。ネットワークデータを読み込むDLL内の関数がこの動作を引き起こすことが判明しました。
しかし、流出した弦が残り2 本という解釈が よくわからないのですが、具体的に どういうことなのか、さらにどこを掘 ればいいのでしょうか?
dllから、明示的にcheck json stringを渡してみた
漏れた文字列が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は閉鎖されているため、残念ながらソースコードはありません