我正在我的第一个Qt应用程序,小部件真的,我得到一个段错误,当我尝试填充一对<int, QString>
标准库地图。我的目标是用int键和QString值填充地图。我不知道pair是否是最好的方法,所以任何建议都会很棒。Qt程序seg错误,当我试图插入一对地图
这是除main之外的唯一源文件。
#include "linuxtips.h"
#include "ui_linuxtips.h"
LinuxTips::LinuxTips(QWidget *parent) :
QWidget(parent),
ui(new Ui::LinuxTips)
{
loadRandTip();
ui->setupUi(this);
}
LinuxTips::~LinuxTips()
{
delete ui;
}
void LinuxTips::on_learnMore_clicked()
{
}
void LinuxTips::on_viewAll_clicked()
{
}
void LinuxTips::loadRandTip()
{
int i = 0;
std::map<int, QString>::iterator it;
QString line;
QFile inputFile(":/tipFile.txt");
inputFile.open(QIODevice::ReadOnly);
QTextStream in(&inputFile);
do{
line = in.readLine();
// this->TipMap.insert(it, std::pair<int, QString >(i,line));
i++;
}while(!in.atEnd());
}
如果我取消注释this->TipMap.insert(it, std::pair<int, QString >(i,line));
那么它会运行。由于它是一个seg错误,我确定它是一个内存溢出或空指针,但我不确定它是什么。谢谢你的帮助。
你看过堆栈跟踪吗? – Aesthete
当我试图在主函数和注释行之前放置多个断点时。该程序立即崩溃,从不停止在任何中断点。当我使用Valgrind时也是如此。没有输出,只是一个崩溃通知。 – CallMeNorm