-3

ランダムクラッシュ(SIGBUS)を調査しており、クラッシュしたメソッドを呼び出すポインターが破損する可能性があるものを見つけようとしています。このポインタは、C++コードでCスタイルのキャストを使用して基本クラスからキャストされていることがわかりました。だから、どのような場合にそのようなキャストがクラッシュを引き起こすのだろうかと思い、それが私の問題の根本的な原因であるかどうかを理解しようとします。

4

1 に答える 1

1

キャスト自体はクラッシュを引き起こしません(明らかに..)しかし、実際にはその子ではない子のオブジェクトをキャストした場合、割り当てられていない場所または間違った場所から関数を呼び出そうとしてクラッシュする可能性があります。 。

たとえば、Aを継承するAとB、Cがあり、BのサイズがCよりもはるかに大きい場合は、Cを割り当てたものをBにキャストするとクラッシュする可能性があります。これはdynamic_cast<SomeType>(ptr); 、結果を使用して確認することで解決できます。 nullptrではありません

于 2013-03-24T10:25:45.690 に答える