调试Qt程序的时候,出现“底层由于接收到操作系统的信号而停止”。
信号名称:SIGSEGV
信号意义:Segmentation fault
这类现象都是因为内存错误导致的。
分析一:内存未申请成功,却使用了它。
对策: 在使用指针前,用Q_ASSERT(p) 或者 Q_CHECK_PTR(p) ,若p为NULL,则报错。
分析二:内存释放后,未置为NULL,形成“野指针”,仍然使用它。
对策: 在释放内存后,一定记得将指针置为NULL。
内存错误有很多种,就不一一分析了。
若想深入了解,请看我的另一篇文章,链接如下: 常见的内存错误及对策