如果内存不足,则抛出Bad_alloc异常

时间:2015-10-13 23:20:39

标签: c++ exception-handling dynamic-arrays bad-alloc

我只需要确保我有足够的内存可用于二维数组映射。因此,我认为我必须尝试抓住错误:在地图的每一行中分配或者可能没有投掷会更优雅。但我无法接受它。任何帮助将不胜感激......

我读过一些关于写一些类似文章的文章:

 map[i] = new int [columns];
 if (map[i] == NULL)
 cout << “No enough memory”;

我不喜欢这个解决方案而且我已经读过那个不太可靠的解决方案。 fillmaze是一个在迷宫构造函数内部调用的函数。

void Maze::setupMaze(int r, int c, int l){
    rows = r;
    columns = c;
    level = l;

    fillMaze();
    addBorders();
    centerWalls();
    getaway();
    addWalls();
}
void Maze::fillMaze(){

    map = new int* [rows];
    for (int i = 0; i < rows; i++) {
        map[i] = new int[columns];
    }

    //Inicializamos toda la tabla
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < columns; j++) {
            map[i][j] = PASSAGE;
        }
    }
}

delete []地图还不够吗?我正在做类的析构函数:

Maze::~Maze(void)
{
    for (int i = 0; i < rows; ++i)
          delete[] map[i];

        delete[] map;
}

0 个答案:

没有答案