dynamic_cast导致SIGSEGV信号.

devilnet 2013-04-15 08:10:37
最近在做一个windows服务器移植到linux的项目。

情况是。当利用dynamic_cast进行转换的时候程序直接崩溃。

gcc的frtti加上去了。虽然默认是打开的。

在小demo中dynamic_cast是没有问题的。

bt查看栈顶
0# in ??()
1# in __dynamic_cast from /usr/lib/libmysqlclient.so.15

求教~
...全文
415 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Manketon 2015-11-21
  • 打赏
  • 举报
回复
楼主,您好。我目前也遇到了和您一样的问题,请问您是如何解决这个问题的啊??谢谢了。 问题描述:工程移植到linux中,dynamic_cast时,出现如下提示: Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7ffff6f9e700 (LWP 2221)] 0x000000386dabb3ca in __dynamic_cast () from /usr/lib64/libstdc++.so.6
  • 打赏
  • 举报
回复
引用 7 楼 devilnet 的回复:
引用 4 楼 adlay 的回复:把你测试的代码发出来撒 这个是工程代码。不是测试。我自己写了一个测试,dynamic_cast没有问题。
那就是某个地方越界了修改了这个dynamic_cast需要用到的数据。
devilnet 2013-04-16
  • 打赏
  • 举报
回复
引用 4 楼 adlay 的回复:
把你测试的代码发出来撒
这个是工程代码。不是测试。我自己写了一个测试,dynamic_cast没有问题。
devilnet 2013-04-16
  • 打赏
  • 举报
回复
引用 5 楼 zhuyf87 的回复:
dynamic_cast转换失败将返回空指针(当对指针进行类型转换时)或者抛出异常(当对引用进行类型转换时)。 楼主贴一下代码。
返回空值是dynamic_cast获得指针。成功就是基类指针了。失败就是没有虚函数活着继承关系,返回值为空。跑出异常时 std::bad_cast这个只适合引用的转换。但是不保证转换成功。 我现在是dynamic_cast直接崩溃~
zhuyf87 2013-04-16
  • 打赏
  • 举报
回复
dynamic_cast转换失败将返回空指针(当对指针进行类型转换时)或者抛出异常(当对引用进行类型转换时)。 楼主贴一下代码。
www_adintr_com 2013-04-16
  • 打赏
  • 举报
回复
把你测试的代码发出来撒
devilnet 2013-04-16
  • 打赏
  • 举报
回复
这个崩溃是在基类A中 动态转换到基类B。 但是在基类A的子类中动态转换成基类B没有问题。
devilnet 2013-04-16
  • 打赏
  • 举报
回复
引用 1 楼 akirya 的回复:
看看转换的指针是否是有效的 new对象的时候看看地址,转换的时候再看看地址。
现在的问题是 dynamic_cast直接崩溃。 需要转换的this指针有效。程序在windows上正常运行。
  • 打赏
  • 举报
回复
看看转换的指针是否是有效的 new对象的时候看看地址,转换的时候再看看地址。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧