C++ 随机生成的多维布尔指针错误

C++ 随机生成的多维布尔指针错误,c++,pointers,C++,Pointers,我让这个函数随机生成真/假值,并将它们分配给多维指针,然后返回指针 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++) {

我让这个函数随机生成真/假值,并将它们分配给多维指针,然后返回指针

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;
}
bool**generateMap()
{
int randNum=0;
int X=7;
int Y=7;
bool**MAP=新bool*[X];
对于(int i=0;i

它可以编译,但是有一个运行时错误,我的代码怎么了

X
Y
都等于7,但是你说:
for(int X=0;X<8;X++)
-所以你是在数组的末尾运行。数组变为0..6,但您可以访问索引7

如果使用(intx=0;x,您会感觉更好。——这就是使这些值成为符号而不仅仅是硬编码的全部意义

当您点击“10个房间”时,您也会停止设置值-关于使用默认值的注释可能是正确的(为什么不在填充10个房间后中断循环?)-最后但并非最不重要的一点:以这种方式使用for,无法保证您将实际获得任何房间。他们可能都是假的