在之前的文章 [ 一种打印螺旋矩阵的方法] (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] ……申请内存空间,然后为数组的每一行申请内存。
这里给出一种更通用更安全的形式:
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避免程序存在潜在的危险。