new分配内存出错,求助!
class Diamond{
public:
int rows; //方块行
int cols; //方块列
int* CellData=NULL; //方块数据
int DiamondType; //方块类型
COLORREF DiamondColor; //方块颜色
void SetDiamond(int DiamondType); //按方块类型构造方块
Diamond & operator =(const Diamond &D);
Diamond & Trun(); //方块翻转时转置数据
Diamond();
~Diamond();
};
Diamond::Diamond()
{
///初始化数据///
rows = 4;
cols = 2;
DiamondColor = RGB(0, 0, 255); ///初始颜色为蓝色
DiamondType = 1; //初始类型为1
// CellData = NULL;
CellData = new int;
for (int i = 0; i < rows * cols; i++)
{
CellData = 0;
}
}
这是俄罗斯方块中的一个类和其构造函数,我在new这下断点,F11会引发中断,提示错误为Critical error detected c0000374。
搞了一天了,搜了很多帖子,求牛人指点!
构造函数我 测试了没有报错 ,你 检查其他的点看看{:9_240:} 小人 发表于 2015-5-31 10:32
构造函数我 测试了没有报错 ,你 检查其他的点看看
我也试验过相同的写法,没有问题。
这是我研究的俄罗斯方块原码中的一段。
是不是有可能是作者人为的在某个地方进行的设置? 魔诀 发表于 2015-5-31 10:55
我也试验过相同的写法,没有问题。
这是我研究的俄罗斯方块原码中的一段。
是不是有可能是作者人为的在 ...
检查下其他地方 构造函数真没问题,或者换个编译器 {:9_240:} C++的世界我不懂 本帖最后由 魔诀 于 2015-6-1 08:48 编辑
小人 发表于 2015-5-31 11:26
检查下其他地方 构造函数真没问题,或者换个编译器
在MFC的View类头文件中声明 Matrix mmin, 构造函数中声明 mmin = Matrix(15, 10),然后调试跟踪。
Matrix::Matrix(int rows,int cols)
{
this->rows = rows;
this->cols = cols;
gridData = new int; // 在这个地方没有问题,能完成内存分配
for (int i = 0; i <= rows; i++)
{
for (int j = 0; j <= cols; j++)
{
gridData = 0;
}
}
}
Matrix::Matrix()
{
gridData = nullptr;
}
Matrix& Matrix::operator=(const Matrix &D)
{
if (this == &D)
return *this;
this->rows = D.rows;
this->cols = D.cols;
delete[] gridData;
gridData = new int; //运行到这个地方就会发生中断
for (int i = 0; i <= rows; i++)
{
for (int j = 0; j <= cols; j++)
{
this->gridData = D.gridData;
}
}
return *this;
}
Matrix::~Matrix()
{
delete[] gridData;
}
这是什么原因?请帮忙看下。 魔诀 发表于 2015-6-1 07:24
在MFC的View类头文件中声明 Matrix mmin, 构造函数中声明 mmin = Matrix(15, 10),然后调试跟踪。
Matr ...
代码全贴上一段小段 很难帮你检查{:9_240:} 本帖最后由 魔诀 于 2015-6-2 05:02 编辑
小人 发表于 2015-6-1 20:43
代码全贴上一段小段 很难帮你检查
已经解决了。谢谢你了。把 <=改成<就行了。一个简单的错误困扰我两天。。
数组越界的问题
页:
[1]