c++のtry_catchの使用、2 D配列の動的作成


以前の記事では[スパイラルマトリクスを印刷する方法](http://blog.csdn.net/bflong/article/details/47273275)で、2 D配列コードを動的に作成します.
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;
    }

}
ダイナミック作成2 D配列のサイズは作成時に決定されるため、作成配列が大きすぎたりメモリが不足したりして作成に失敗した可能性があるため、try-catchを使用してnew失敗による異常bad_をキャプチャします.allocはプログラムに潜在的な危険があることを避ける.