エラー、バグ、質問 - ページ 1892

 
fxsaber:
もうひとつ質問です。
トレッドの性能です。
 
Renat Fatkhullin:
踏襲した作品。
ジョークならジョークらしく)、そうでないなら、プログラミングにおける「トレッド」とは何かを説明してください。
 
Konstantin:
プロテクターとは何なのか、プログラミングで説明してください。
デコンパイラを消滅させたもの
 
Renat Fatkhullin:

はい、ご質問の例を挙げます。

と出力します。

まず、未解決のキャストを下から順にチェックし、NULLを取得します。これは正しい。

次に、CLASS2オブジェクトを作成し、その親クラスへの参照を割り当てます(ここで重要なのは、CLASS2オブジェクトの元の型がそのメタ情報に格納されていることを、環境が動的に知っていることです)。次に、(ご質問のように)参照 CLASS1 から CLASS2 へ動的にキャストします(ソースオブジェクトのメタ情報に基づく変換権チェック付き)。

キャストの結果を確認し、変数i = 1に書き込む。最後に、最初に作成したオブジェクトを 参照しながら、iの値を出力します。

全て仕様通りに正しく動作します(C++自体のdynamic_cast仕様も含む)。

MQLでの型変換がなんとなくわかりました))しかし、どのような場合でも下から上へのキャストはできず、上から下へのdynamic_ castはなくても大丈夫なのに、dynamic_castを 作る目的は何なのでしょうか?もしかしたら、ここには微妙なニュアンスがあり、私には理解できないのかもしれません。
 
Konstantin:
わかりやすい説明ありがとうございます、MQLで型変換でなんとなくわかりました))どうせ下から上にはキャストできないし、上から下にはdynamic_ castがなくても大丈夫なのに、dynamic_castが 必要な意味がわからない?もしかしたら、ここには微妙なニュアンスがあり、私には理解できないのかもしれません。

もう一度、コードと私の説明を読み直してください。

また、ダイナミックキャストでは、もともと生成されたオブジェクトの メタ情報をもとに、下から上に安全にキャストを上げることができることを実証している。オブジェクトが子孫から作成され、親クラスの参照に変換された場合、メタ情報(元のオブジェクトは実際には子孫である)に基づき、その参照を安全に子孫に変換することができます。

一般に、さまざまな子孫のオブジェクトが親クラスへの参照の配列/リストに積み上げられ、それを取り出して1つまたは他の子孫に安全にキャストするときに使用されます。もし変換がNULLを返すなら、それはそのオブジェクトが子孫によってフェッチされておらず、処理されるべきではないことを意味します。

 
Renat Fatkhullin:

もう一度、コードと私の説明を読み直してください。

また、ダイナミックキャストでは、もともと生成されたオブジェクトの メタ情報をもとに、下から上に安全にキャストを上げることができることを実証している。オブジェクトが子孫から作成され、親クラスの参照に変換された場合、メタ情報(元のオブジェクトは実際には子孫である)に基づき、その参照を安全に子孫に変換することができます。

一般に、さまざまな子孫のオブジェクトが親クラスへの参照の配列/リストに積み上げられ、それを取り出して1つまたは他の子孫に安全にキャストするときに使用されます。もし変換がNULLを返すなら、そのオブジェクトはdescendantによってフェッチされていないので、処理されるべきではない。

コードを読んだけど、これじゃない?

CLASS2 *my_ptr2=dynamic_cast<CLASS2 *>(my_ptr);

は、これとは似て非なるものです。

CLASS2 *my_ptr2=(CLASS2*)my_ptr;

dynamic_castを 使ったコードを実行してもエラーにならないのは、dynamic_castが エラーの場合にNULLを 返すからだということ以外、dynamic_castを 使うことの微妙な意味がよくわからない

 
Konstantin:

コードを読んだけど、これじゃない?

は、これとは似て非なるものです。

dynamic_castを 使ったコードを実行してもエラーにならないのは、dynamic _ castが エラーの場合にNULLを 返すから、ということ以外、非常に微妙な点がつかめません

C++のdymanic_castの仕様書をgoogleで読むことをお勧めします。

些細なことなんですけどね。

 
ゲーム起動時にPCリソースを与えるとクラッシュする-ゲーム「コール オブ デューティブラックオプスIII」クラッシュ-1エージェントが関与していたエージェントの優先順位は最低限で、メモリは3.5ギガバイトの16を消費し、一般的には問題はないはずです。非活性剤では、ゲームは問題なくプレイできました。エージェントと他のプログラムとの互換性をテストしたことがありますか?
 
-Aleks-:
ゲーム起動時にPCリソースを与えるとクラッシュする-ゲーム「コール オブ デューティブラックオプスIII」クラッシュ-1エージェントが関与していたエージェントの優先順位は最低限で、メモリは3.5ギガバイトの16を消費し、一般的には問題はないはずです。非活性剤では、ゲームは問題なくプレイできました。他のプログラムとのエージェントの互換性について一般的にテストされていますか?

なぜか私はすぐに、もしかしたらゲームのバグかもしれないと思い、プログラムが4GB以上のアドレス空間に読み込まれたときの64ビットマシンでの作業の特殊性と結びつけて考えてしまいました。
 
Sergey Dzyublik:

何らかの理由ですぐに、おそらくゲームのバグという考えが浮かび、プログラムがアドレス空間> 4GBにロードされたときに、64ビットマシン上での作業の特殊性にそれを接続しました。

つまり、この仮説を確かめるには、RAMを4ギガバイト以上にして、ゲームを実行する必要があります。