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

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();
XXXXXXX
ui.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成功运行!皆大欢喜!

你可能感兴趣的:(问题解决)