c++中try_catch的使用,二维数组动态创建

在之前的文章 [ 一种打印螺旋矩阵的方法] (http://blog.csdn.net/bflong/article/details/47273275)中有这样一段动态创建二维数组代码:

int **CircleArray;
CircleArray = new int *[n];
for (int t = 0; t < n; t++)
{   
 CircleArray[t] = new int[n];
}

程序首先为x[0], x[1], x[2] ……申请内存空间,然后为数组的每一行申请内存。
c++中try_catch的使用,二维数组动态创建_第1张图片

这里给出一种更通用更安全的形式:

template<class T>
bool Array2(T **&x, int row, int collumn)
{
try{
    x = new T *[row];
    for (int t = 0; t < n; t++)
        CircleArray[t] = new int[n];
    return true;
    }
catch(bad_alloc)
    {
    return false;
    }

}

由于动态创建二维数组的大小在创建时才能确定,可能由于创建数组过大或者内存不足等原因出现创建失败的情况,所以,这里使用try——catch捕捉 new失败产生的异常bad_alloc避免程序存在潜在的危险。

你可能感兴趣的:(二维数组,try-catch,动态创建)