首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Qt中出现段异常的原因分析

2012-10-20 
Qt中出现段错误的原因分析这里只说我在写程序时遇到段错误的原因,如何解决的总之,涉及到指针的,你不能在未

Qt中出现段错误的原因分析

这里只说我在写程序时遇到段错误的原因,如何解决的
总之,涉及到指针的,你不能在未定义,未初始化,未 “new” 之前使用,否则等待你的肯定是 segment fault,然后程序直接退出

1. 类A在执行中可能会几次用到用到类B,也可能只有一次用到,也可能一次都不用,这种情况下我的习惯就是在类A的构造函数中初始化B类对象为NULL,然后在用的地方先判断B是否实例化,未实例化,实例化,然后使用,delete B类对象时也要先判断下B是否实例化
    因为这里已经初始化了类B的对象,使用时容易出的错误是在判断是否实例化时,如果在判断类本身是否实例化之前,判断了(或者说使用了)类B的成员函数/成员变量,出现段错误,因为这个类不存在,其成员函数/变量也不存在

举个我用qt做播放器的例子,其中调用到mplayer播放器:

发生错误的时候,我在mainwindow.h 里 有定义了个widget,用于将视频播放的位置固定在这个widget上。

private:

          QWidget*widget;

 

然后在mainwindow.cpp里,我调用这个窗口:

QString common ="mplayer -slave -quiet-ac mad -zoommovie/" + file_name+ "-wid " +QString::number(widget->winId());

程序运行后果然提示段错误!

后来了发现是在调用widget的时候未初始化,即要在之前:

widget =new QWidget(this);

QString common ="mplayer -slave -quiet-ac mad -zoommovie/" + file_name+ "-wid " +QString::number(widget->winId());

这样就可以正常运行了!

热点排行