我正在我的第一個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