-3

我正在调查随机崩溃(SIGBUS),并试图找出可能破坏调用崩溃方法的指针的原因。我发现这个指针是使用 C++ 代码中的 C 风格转换从它的基类转换而来的。所以,我想知道在什么情况下这样的强制转换可能会导致崩溃,并尝试了解它是否是我的问题的根本原因。

4

1 回答 1

1

转换本身不会导致崩溃(显然..)但是如果您转换了一个不是真正那个孩子的孩子的对象,它可能会尝试从未分配或错误的地方调用一个函数并崩溃。 .

例如,我们有 A 和 B,C 继承 A,如果 B 的大小比 C 大得多。如果将分配给 C 的内容转换为 B,则可能会崩溃。这可以使用dynamic_cast<SomeType>(ptr); 然后询问结果是否解决不是 nullptr

于 2013-03-24T10:25:45.690 回答