qt中二维数组的使用_Qt中关于二维数组内存的分配为什么会报错?

在Qt应用程序中,遇到二维数组`matrix`在初始化时分配内存导致程序中断的问题。代码创建了一个主窗口`SnakesGameMain`,包含一个`HEIGHT`x`WIDTH`的二维整数数组。在`SnakesGameMain`的构造函数中,尝试为每一行分配内存,但在`matrix[i] = new int[WIDTH]`处程序停止。问题可能源于内存不足或者未正确声明和初始化数组。
摘要由CSDN通过智能技术生成

我在创建了两个文件,一个用来显示登陆界面,一个用来作为小游戏主题。下面是两个文件的代码:

//snakegameli.h

#ifndef SNAKESGAMELI_H

#define SNAKESGAMELI_H

#include

#include "snakesgamemain.h"

namespace Ui {

class snakesgameLI;

}

class snakesgameLI : public QDialog

{

Q_OBJECT

public:

explicit snakesgameLI(QWidget *parent = 0);

~snakesgameLI();

private slots:

void on_StartBtn_clicked();

void on_closeBtn_clicked();

private:

Ui::snakesgameLI *ui;

};

#endif // SNAKESGAMELI_H

//snakesgameli.cpp

#include "snakesgameli.h"

#include "ui_snakesgameli.h"

snakesgameLI::snakesgameLI(QWidget *parent) :

QDialog(parent),

ui(new Ui::snakesgameLI)

{

ui->setupUi(this);

}

snakesgameLI::~snakesgameLI()

{

delete ui;

}

void snakesgameLI::on_StartBtn_clicked()

{

accept();

}

void snakesgameLI::on_closeBtn_clicked()

{

close();

}

还有一个ui文件运行后的效果是这样的

在点击了开始游戏后登陆界面会消失,但是不会出现主体界面

下面是main函数

#include

#include "snakesgameli.h"

#include "snakesgamemain.h"

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

snakesgameLI dialog;

if(dialog.exec()!= QDialog::Accepted)

return -1;

SnakesGameMain w;

w.show();

return a.exec();

}

接下来是主体界面文件:

//snakesgamemain.h

#ifndef SNAKESGAMEMAIN_H

#define SNAKESGAMEMAIN_H

#include

#define HEIGHT 50

#define WIDTH 96

class SnakesGameMain : public QMainWindow

{

Q_OBJECT

public:

explicit SnakesGameMain(QWidget *parent = 0);

~SnakesGameMain();

private:

int **matrix;

};

#endif // SNAKESGAMEMAIN_H

//snakesgamemain.cpp

#include "snakesgamemain.h"

SnakesGameMain::SnakesGameMain(QWidget *parent) :

QMainWindow(parent)

{

for(int i = 0; i < HEIGHT; i++)

{

matrix[i] = new int[WIDTH];

}

resize(800, 600);

}

SnakesGameMain::~SnakesGameMain()

{

}

在调试后发现程序在matrix[i] = new int[WIDTH]处中断

反复检查了很多次很是不能理解,遂来求dalao们出手相助......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值