abort() has been called 问题分析和解决

来源:互联网 发布:淘宝评价不能发图片 编辑:程序博客网 时间:2024/06/05 19:41

abort() has been called 问题分析和解决

今天在运行一个编译成功的程序时弹出了错误提示框“abort() has been called”,但是程序直接在vs里面运行的时候又是正常的,debug也没有错误。百思不得其解,内事不决就问百度,果然找到了一条有用的帖子

https://zhidao.baidu.com/question/2205942904936726708.html
然而每个问题都有其特殊性,下面具体描述一下我的问题以及解决方法。
我原来的代码长这样,

    int user_num = FV_DB.get_user_num();    ui.textBrowser_2->setText("3");    QApplication::processEvents();    int *fv_count_ptr = new int[user_num];    ui.textBrowser_2->setText("4");    QApplication::processEvents();    string *user_ID_ptr = new string[user_num]

其中

ui.textBrowser_2->setText("3");QApplication::processEvents();XXXXXXXui.textBrowser_2->setText("4");QApplication::processEvents();

是为了在exe文件中通过输出的数定位问题,例如输出的数为3,我就知道了是XXXX出现了问题。

这里出错是因为在用new int[user_num]定义数组时,不能确定user_num大于0。于是我将代码中加入了对user_num是否大于0的判断。

int user_num = FV_DB.get_user_num();if (user_num < 1)      user_num = 10;int *fv_count_ptr = new int[user_num];string *user_ID_ptr = new string[user_num];

确定user_num大于0了

exe成功运行!皆大欢喜!

原创粉丝点击