随机生成的多维布尔指针错误
Randomly generated multidimensional Boolean pointer error
我让这个函数随机生成真/假值并将它们分配给多维指针,然后返回指针。
bool** generateMap()
{
int randNum = 0;
int X = 7;
int Y = 7;
bool** MAP = new bool*[X];
for (int i = 0; i < X; ++i)
MAP[i] = new bool[Y];
for (int x = 0; x < 8; x++)
{
int rooms = 0;
for (int y = 0; y < 8; y++)
{
if (rooms < 10)
{
randNum = rand() % 6;
switch (randNum)
{
case 0:
MAP[x][y] = true;
++rooms;
break;
case 1:
MAP[x][y] = false;
break;
case 2:
MAP[x][y] = false;
break;
case 3:
MAP[x][y] = false;
break;
case 4:
MAP[x][y] = false;
break;
case 5:
MAP[x][y] = false;
break;
default:
break;
}
}
else
{
}
}
}
return MAP;
}
它可以编译,但存在运行时错误,我的代码有什么问题?
X
和 Y
都等于 7,但你说:for (int x = 0; x < 8; x++)
- 所以你跑掉了数组的末端。数组变为 0..6,但您访问索引 7。
使用for (int x = 0; x < X; x++)
会更好 - 这就是使这些值具有符号性而不仅仅是硬编码7的重点。
一旦你点击"10个房间",你也会停止设置值 - 关于使用默认值的评论可能是有序的(为什么不打破循环,一旦你填充了10个房间?( - 最后但并非最不重要的一点是:以这种方式使用for,不能保证你真的会得到任何房间。他们都可能出现错误...
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 尝试设置唯一指针布尔数组的值时BAD_ACCESS错误
- lambda 转换为布尔值,而不是推导函数指针类型
- 在一个作用域中推送五个对象指针,然后检查对象的布尔值是否为 false,会给出错误
- 如何在具有同一类指针的类中编写布尔运算符?
- 随机生成的多维布尔指针错误
- 非标准语法;使用"&"创建指向成员的指针。访问布尔变量
- 使用布尔值数组"表达式必须具有指向对象类型的指针"错误C++
- 如何在没有带布尔的包装的情况下检查指针是否有效
- 对循环和字符串函数中的指针的操作以及布尔值
- 布尔函数,将指向 C 字符串的指针作为参数/参数
- 从成员变量指针返回布尔值
- 指向布尔值的C++指针
- 双指针的布尔值(存在/为空或否)
- 依靠布尔值访问指针
- 返回布尔函数的值,并将指针作为参数传递
- 指向布尔值的空指针的隐式强制转换
- 在c++中正确地相互引用布尔指针
- 指针如何在c++布尔表达式中求值
- 分配新的布尔数组指针