Qt4.12.2 Debug下正常,Release下程序崩溃

Super Blaze 2020-08-04 01:09:10
奇怪了,这段代码在Qt环境下用Debug下正常读取文本文档,为什么在Release下运行这个功能也会崩或者直接windeployqt编译出来这个功能都会崩,编译器也没有什么特别的提示,只提示:程序异常结束!百度说是跟Release优化代码有关,我一个小白哪懂这么复杂的处理过程呀!我只有25积分了,希望牛人们帮看看纠正下代码。
这个功能是点击PushButton就读取一个文本文档,读取功能的所以代码就是下面这段:
//获取用户桌面路径
QString desktopPath = QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
QFileDialog *fDialog = new QFileDialog(this);
fDialog->setAcceptMode(QFileDialog::AcceptOpen);
fDialog->setWindowTitle("请选择关键词文本文件");
fDialog->setDirectory(desktopPath);
fDialog->setNameFilter("文档词库(*.txt)");
fDialog->setFileMode(QFileDialog::ExistingFile);
fDialog->setViewMode(QFileDialog::List);
int openStatus = fDialog->exec();
if(openStatus == 1){
//获取到用户选择的词库文件路径
QString keywordpath = fDialog->selectedFiles()[0];
QFile file(keywordpath);
bool fileOpenStatus = file.open(QIODevice::ReadOnly | QIODevice::Text);
if(fileOpenStatus == true){
QTextStream text(&file);
text.setCodec("UTF-8");
//插入库的行位置
int RowLocation = 0;
while(text.atEnd() == false){
RowLocation ++;
QString line = text.readLine();
//导入到关键词库
if(arg == 1){
ui->tableWidget_keyword->setRowCount(RowLocation);
QTableWidgetItem *word = new QTableWidgetItem(line);
ui->tableWidget_keyword->setItem(RowLocation - 1,0,word);
ui->formGroupBox_keyeord->setTitle(QString("关键词库 %1/条").arg(RowLocation));
}else if(arg == 2){
ui->tableWidget_description->setRowCount(RowLocation);
QTableWidgetItem *description = new QTableWidgetItem(line);
ui->tableWidget_description->setItem(RowLocation - 1,0,description);
ui->formGroupBox_description->setTitle(QString("描述词库 %1/条").arg(RowLocation));
}else if(arg == 3){
ui->tableWidget_search->setRowCount(RowLocation);
QTableWidgetItem *search = new QTableWidgetItem(line);
ui->tableWidget_search->setItem(RowLocation - 1,0,search);
ui->gridGroupBox_search->setTitle(QString("内容词库 %1/条").arg(RowLocation));
}else if(arg == 4){
ui->tableWidget_videos->setRowCount(RowLocation);
QTableWidgetItem *videoAddress = new QTableWidgetItem(line);
ui->tableWidget_videos->setItem(RowLocation - 1, 0, videoAddress);
ui->gridGroupBox_video->setTitle(QString("搜索词库 %1/条").arg(RowLocation));
}
//防止界面假死
//QApplication::processEvents();
}
file.close();
}else{
//打开文本文档失败
}
}
if(arg == 1){
if(ui->tableWidget_keyword->rowCount() != 0){
//记录关键词库的数量 and 计算生成需要的文件名数量
wordCount.wordCount = ui->tableWidget_keyword->rowCount();
int y = htmlQueryWordCount("关键词");
//计算按关键字数量计算数量
int num = wordCount.wordCount / y;
ui->spinBox_number->setValue(num);
//按计算数量来生成文件名
for(int x = 0; x < ui->spinBox_number->value(); x ++){
ui->tableWidget_files->setRowCount(x+1);
QString key = getRandomString(9);
QTableWidgetItem *keys = new QTableWidgetItem(key);
ui->tableWidget_files->setItem(x,0,keys);
ui->gridGroupBox_files->setTitle(QString("生成文件名 %1/条").arg(x + 1));
}
}
}
fDialog->close();
fDialog = nullptr;
delete fDialog;
...全文
914 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Super Blaze 2020-08-06
  • 打赏
  • 举报
回复
引用 1 楼 注视着的回复:
会不会是内存出错了 Debug和Release的内存布局好像不一样
结果是我设计的逻辑错误了!谢谢老铁,问题我已经解决了
注视着 2020-08-06
  • 打赏
  • 举报
回复
会不会是内存出错了 Debug和Release的内存布局好像不一样

33,315

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧