MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 596

 
Juer:

わかりました。OnDeinit()で削除させてください。でも、今はもうテスト中にメモリ不足のエラーが出るようになってしまって...。つまり、OnDeinit()までたどり着けません。

だから、ダブルのオブジェクトをたくさん作ることになる。そうすると、すべてが地獄に落ちて、終わりが分からなくなる。

 
Artyom Trishkin:

つまり、重複したオブジェクトを大量に作ってしまうわけです。そうすると、全体が見えなくなり、最後がわからなくなる。

オブジェクトを削除していない場所を正確に知るにはどうしたらよいですか?大きなプログラムです :)

 
Juer:

オブジェクトを削除していない場所を正確に知るにはどうしたらよいですか?大きなプログラムです :)

まず、どこでどのようにそのような山を作ったかを調べる必要があります。記憶が正しければ、1万個くらいはあるんじゃないですか?どんなものですか?過去のデータオブジェクトなのか?あるいは、どんなモノがそんなにたくさんあるのか?オブジェクトの配列 - どのような?

 
Artyom Trishkin:

まず、どこでどのようにそのような山を作ったかを調べる必要があります。記憶が正しければ、そこに何万個もあるんでしょう?どんなものですか?歴史的なデータのオブジェクト?あるいは、どんなモノがそんなにたくさんあるのか?オブジェクトの配列 - どのような?

あ、いろいろ入ってますね。主にキャンドルの種類と ルール。複雑なんです ))

 
Juer:

オブジェクトを削除していない場所を正確に知るにはどうしたらよいですか?大きなプログラムです :)

ティックごとに新しいオブジェクトを作成するわけではありません。もちろんそれは可能ですが(しかし、私の意見では常に合理的とは言え ません)、オブジェクトの作業を 終えたらすぐにデフレートする方が合理的であるはずです。これくらいしか説明がつかない。

 
Juer:

あ、いろいろ入ってますね。主にキャンドルの種類と ルール。複雑なんです ))

ある人には複雑で、ある人にはそうでない。しかし、今、それを整理するのはあなた次第です。

ひとことお願いします。ゼロから始める。TFを変更したときや再コンパイルしたときに、ログに未削除のオブジェクトやメモリリークに関するメッセージが表示されたら、それを修正します。次に、すべてのオブジェクトが正しく保存、使用、削除されているかどうかをチェックする機能を追加します。newで作成した場合は、自分で削除する必要があります。

 
Konstantin Nikitin:

ティックごとに新しいオブジェクトが作られるわけではありませんよね?可能ですが(私の意見では、常に合理的とは 言えません)、オブジェクトの作業を終えたらすぐに デフレートする方が合理的でしょう。それくらいしか説明がつかない。

それぞれのキャンドルに

 
Juer:

それぞれのキャンドルに

まあ、前のオブジェクトが必要ないのであれば、素直に削除するのが得策です。

 
Konstantin Nikitin:

まあ、前のオブジェクトが必要ないのであれば、一旦削除した方が良いですね。

そう、そこなんです。オブジェクトが他のオブジェクトの中に入っていて、もう簡単に削除できないので、とてもわかりにくいです。あるオブジェクトは他のオブジェクトに依存し、そのオブジェクトは最初のオブジェクトに依存する第3のオブジェクトに依存する :)

人生はとても複雑だ :(

 
Juer:

そう、そこなんです。オブジェクトが他のオブジェクトの中に入っていて、もう簡単に削除できないので、とてもわかりにくいです。あるオブジェクトは他のオブジェクトに依存し、そのオブジェクトは最初のオブジェクトに依存する第3のオブジェクトに依存する :)

人生はとても複雑だ :(

ごっちゃになってますね。タスクのプランニングを誤ると、まさにそのような結果になるのです。

クラス内でオブジェクトが生成された場合、そのクラスは終了時にデストラクタでオブジェクトを削除しなければなりません。他のクラスは、オブジェクトへのポインタを取得する 前に、そのオブジェクトが有効であるかどうかを確認する必要があります。そして、原則的にそのような絡み合った関係はないはずです。ちょっと絡んでますね。複雑なのは品質ではありません。すべてが透明で、追跡可能であるべきです。まず第一に、あなたのために。