Qt出现堆溢出(Error Code -1073741823)

症状

在使用Debug模式时,程序可以正常启动,但是切换到Release模式,程序报错,错误码-1073741823

原因

程序中使用了过多的new。比如:

QActionGroup *mProtocolGroup;
mLidarTypeSelGroup = new QActionGroup(this);

这个heap是在构造函数期间申请的,也就是说在整个程序运行期间,都会占用heap。然而,系统给程序的堆的空间是有限的。当占用堆过多就会出错。

解决方法

将new方法改成局部变量,比如上面的改成

QActionGroup mProtocolGroup;
mProtocolGroup(this)

这样内存分配到stack区,就没有这个问题了。

posted @ 2017-04-06 10:05  Weyne  阅读(1218)  评论(0编辑  收藏  举报