私は複数のゲームを扱うプロジェクトに取り組んでいます。ユーザーがゲームの1つを選択するとエラーが発生し、アプリケーションがクラッシュします。これはプロファイルモードでのみ発生します。私が手
エラーは、Microsoft Visual C++ランタイムライブラリからである:...このapplicaitonは珍しい 方法で終了するランタイムを要求していQTプロジェクトがプロファイル上でクラッシュし、リリースとデバッガで実行中
オンライン読んでから、それは私がいるようです不適切なメモリ管理をしていると、どこに問題があるのか分からないようです。ここに私のC++のソースファイルがある:あなたが動的に割り当てされていません(私は仮定)何かを削除する
delete ui->pushButton_select_num_sticks;
delete ui->lineEdit_numsticks;
:
#include "sticks.h"
#include "ui_sticks.h"
Sticks::Sticks(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::Sticks)
{
ui->setupUi(this);
}
Sticks::~Sticks()
{
delete ui;
}
int Sticks::selectUserChoice(int choice){
ui->pushButton_select1->setEnabled(false);
ui->pushButton_select2->setEnabled(false);
ui->pushButton_select3->setEnabled(false);
numsticks = numsticks - choice;
//game_msg = "You grabbed " + QString::number(choice) + " sticks. There are " + QString::number(numsticks) + " sticks remaining";
//setMessage(game_msg);
computerChoice = getComputerChoice(numsticks);
numsticks = numsticks - computerChoice;
if (numsticks == 1)
ui->pushButton_select1->setEnabled(true);
if (numsticks == 2){
ui->pushButton_select1->setEnabled(true);
ui->pushButton_select2->setEnabled(true);
}
else{
ui->pushButton_select1->setEnabled(true);
ui->pushButton_select2->setEnabled(true);
ui->pushButton_select3->setEnabled(true);
}
}
int Sticks::getComputerChoice(int current_sticks){
/*Get a pseudo-random integer between 1 and 3 (inclusive)*/
int choice = rand() % 3 + 1;
if (current_sticks >=2 && current_sticks <=4){
choice = current_sticks - 1;
}
else if (current_sticks == 1){
return current_sticks;
}
return choice;
}
void Sticks::on_pushButton_select1_clicked()
{
selectUserChoice(1);
}
void Sticks::on_pushButton_select2_clicked()
{
selectUserChoice(2);
}
void Sticks::on_pushButton_select3_clicked()
{
selectUserChoice(3);
}
void Sticks::on_pushButton_select_num_sticks_clicked()
{
numsticks = ui->lineEdit_numsticks->text().toInt();
if (numsticks < 10 || numsticks > 100) //Check that numsticks is 10-100
return;
std::ostringstream ss;
ss << "There are " << numsticks << " sticks remaining";
std::string str = ss.str();
QString qstr = QString::fromStdString(str);
ui->label_current_sticks->setText(qstr);
//ui->horizontalLayout->removeWidget(ui->pushButton_select_num_sticks);
delete ui->pushButton_select_num_sticks;
delete ui->lineEdit_numsticks;
ui->pushButton_select1->setEnabled(true);
ui->pushButton_select2->setEnabled(true);
ui->pushButton_select3->setEnabled(true);
ui->label_grab->setEnabled(true);
}
void Sticks::setMessage(QString msg){
/*
prev_msg3 = ui->label_msg3->text();
prev_msg2 = ui->label_msg2->text();
prev_msg1 = ui->label_msg1->text();
ui->label_msg4->setText(prev_msg3);
ui->label_msg3->setText(prev_msg2);
ui->label_msg2->setText(prev_msg1);
ui->label_msg1->setText(msg);
*/
}
あなたの質問を[編集]して[mcve]を提供してください。 –