MQL5におけるOOPに関する質問 - ページ 10

 
Vasiliy Sokolov:

...MQLでどのバリエーションが使われているかは不明ですが...。

MQLにはゴミ回収業者がいません。
 
Vasiliy Sokolov:

こんにちは。 コンピュータのメモリは、スタックとヒープのどちらのコンテキストで使われても同じ性能に なります。動的メモリ管理自体はゴミ収集器の実装に依存します。例えば、Python(低速版)のように参照カウントを行ったり、バックグラウンドプロセスで実行グラフのトラバースを行いオブジェクト生成エポックを分析する(Net CLR)ことも可能です。 MQLでどのようなバリエーションが使われているかは不明ですが、MQL5のユーザーは削除演算子が直接利用できるため、GCの作業自体が大幅に簡略化され、非常に効率的であると推測されます。 したがって、newを 使用する際のオーバーヘッドに関する懸念は杞憂に過ぎず、自由にダイナミックメモリを使用することができます。

スタックオーバーフロー」については、現代のシステムでこのケースに遭遇するのは、複雑な再帰を使用する場合や再帰アルゴリズムにミスがある場合のみです。最近のプログラムは、常に仮想アドレス空間のOC protected modeで動作し、メモリページをダイナミックにロードするので、スタックがオーバーフローすることはありません:)

虚偽の記載。

 
Dmitry Fedoseev:
MKLにはゴミ収集員がいない。

MT4 / MT5は何に書かれているのですか?- 何か情報は?

;)

ZS:自由に利用できる最大 - Metakvotから求人、応募者にプログラマのための要件が書かれている;)

 
Igor Makanu:

MT4 / MT5は何に書かれているのですか?- 何か情報は?

;)

ZS:自由に利用できる最大 - Metakvotから求人、応募者にプログラマのための要件が書かれている;)

何語で書かれているかは関係ないのですか?mqlでは、newで作成されたオブジェクトはそれ自体では削除されない。ちなみに、c++ではどちらもありません))

 
Dmitry Fedoseev:
MKLにはゴミ収集員がいない。

ディミトリ、あなたは間違っている。MetaTraderに結局ゴミ収集機がある3つの理由を紹介します。

  1. MQL5では、newせずに作成されたオブジェクトは自動的に削除されます。このようなオブジェクトへのポインタはAUTOMATIC型とする。それらは聖霊によって、あるいはゴミ収集者によって自動的に削除されます。
  2. MQL5プログラムはMetaTraderの内部仮想マシンで 実行されると、開発者は何度も述べています。仮想マシンがあれば、ゴミ収集機もあるはずです。
  3. ダイナミックオブジェクトがユーザーの要求通りに削除されていない場合、MetaTraderは、削除されていないオブジェクトの数と数を示す「リークされたメモリ」メッセージでそれを表示します。つまり、MetaTraderは、実際に何がどれだけ割り当てられたかを知っています。つまり、メモリ操作を制御する、並行して動作するいくつかのシステムがあることは明らかで、これがごみ収集器です。
 
Dmitry Fedoseev:

虚偽の記載。

追伸:この数年でずいぶん変わりましたね。辛気臭くなったね。以前は建設的な提案をたくさんしていただいたと記憶しています。今、あなたは常に口論している:無意味な議論/否定/糾弾。何のために?もっと強く殴りたいのか?- 私はあなたに石をあげます:とにかく殴ってください、でも私はあなたにずっと同情しています。

 
Vasiliy Sokolov:

ディミトリ、あなたは間違っている。MetaTraderに結局ゴミ収集機がある3つの理由を紹介します。

  1. MQL5では、newせずに作成されたオブジェクトは自動的に削除されます。このようなオブジェクトへのポインタはAUTOMATIC型とする。それらは聖霊によって、あるいはゴミ収集者によって自動的に削除されます。
  2. MQL5プログラムはMetaTraderの内部仮想マシンで 実行されると、開発者は何度も述べています。仮想マシンがあれば、ゴミ収集機もあるはずです。
  3. ダイナミックオブジェクトがユーザーの要求通りに削除されていない場合、MetaTraderは、削除されていないオブジェクトの数と数を示す「リークされたメモリ」メッセージでそれを表示します。つまり、MetaTraderは、何がどれだけ割り当てられたかを正確に把握しているのです。メモリ処理を制御する何らかのシステムが並行して稼働していることは明らかで、これはゴミ収集器です。

1.聖霊でもなく、ゴミ拾いでもない。

2.3 無限に妄想できる。

 
Vasiliy Sokolov:

Z.I.さんは、この数年でずいぶん変わりましたね。袂を分かつようになったんですね。以前は建設的な提案をたくさんしていただいたと記憶しています。今、あなたは常に口論している:ちょうど無意味な議論/否定/糾弾。何のために?もっと強く殴りたいのか?- 自分から石を投げる:とにかく殴ってくれ、でもとにかくかわいそうだ。

すすり泣き!?

 
Dmitry Fedoseev:

1.聖なる霊でもなければ、ゴミ収集人でもない。

2.3 想像力は無限大。

ドキュメントを読もうnew 演算子はオブジェクトへのポインタを返すのではなく、オブジェクト記述子を 返す。私は、どんなクラスも、プログラムを最小化するときに忘れられたオブジェクトを安全に殺し、同時にリークの存在を親切に示すラッパーに包まれていることを敢えて提案します。一般的には、この仕組みはクリエイターのコメントに任せた方が良いと思います。
 
Vladimir Simakov:
ドキュメントを読もうnew 演算子はオブジェクトへのポインタを返すのではなく、オブジェクト記述子を 返す。私はあえて、どんなクラスも、最小化時に忘れられたオブジェクトを安全に殺すようなラッパーに包まれ、同時に既存のリークを親切に指摘することを提案します。一般的には、この仕組みはクリエイターのコメントに任せた方が良いと思います。

そう、EAを書くプログラマーが退屈しないように、メモリリークに関するメッセージを削除して書いてくれるんだ。

昨日はメモリリークがあったのに、今日はそれすらあり得ないというのは面白いですね。

そして、鳥といえば...ディスクリプタはポインタでもある。それに、ディスクリプタでもポインタでも識別子でも、その言葉自体は何も変わらないでしょ。