在哪些情况下,基类到派生类的c风格强制转换可能导致崩溃
In what cases c-style casting of base class to derived may cause crash
我正在调查随机崩溃(SIGBUS),并试图找出可能损坏调用崩溃方法的指针的原因。我发现这个指针在c++代码中使用C风格的转换从它的基类中强制转换。所以,我想知道在什么情况下,这样的强制转换可能会导致崩溃,并试图了解它是否是我的问题的根本原因。
类型转换本身不会导致崩溃(显然…)但是,如果您强制转换的子对象实际上不是子对象,则它可能会试图从未分配或错误的位置调用函数并崩溃。
例如,A, B,C继承A,如果B的大小比C大得多。如果将分配给C的内容强制转换为B,就会导致程序崩溃。这可以用dynamic_cast<SomeType>(ptr);
来解决然后询问结果是否为nullptr
相关文章:
- cv::Mat灰色风格转换
- 将 GCC/ATT 风格的汇编器转换为可视化工作室汇编器
- 在没有c风格强制转换的情况下,将DWORD_PTR强制转换为class,反之亦然
- 我应该使用c++的reinterpret_cast而不是C风格的强制转换吗?
- 使用c++风格的类型转换将int转换为char
- c++中的构造函数调用或函数风格强制转换
- 将任何容器转换为c风格的数组视图
- Reinterpret_cast与c风格的强制转换
- 旧风格使用sys/select.h宏强制转换警告
- c++枚举类型可以作为函数调用吗?或者它只是一种不同风格的类型转换
- 将字符串转换为c风格字符串并检测空终止字符
- 难以理解c风格的类型转换和动态转换
- c++中的C风格强制转换会产生奇怪的行为
- 在哪些情况下,基类到派生类的c风格强制转换可能导致崩溃
- 通过c风格转换将char*转换为QString
- c++规范是否说明如何在static_cast/const_cast链中选择用于C风格强制转换的类型?
- 转换需要reinterpret_cast、c风格强制转换或函数风格强制转换
- 将c风格的程序转换为c++
- c++类型转换,用于C风格的向下转换
- 编译器开关在c风格的强制转换中禁用const_cast语义