>89 こういうことでしょうか? 結果は >83 と同じでした。

#define MAXCH 4096

long **Data;
int i;
try{
Data = new long *[MAXCH+1];
for (i = 0; i < MAXCH+1; i++){
Data[i] = new long [MAXCH+1];
}
}
catch (bad_alloc) {
for (int j = i-1; j <= 0; j--){
delete [] Data[j]; Data[j] = NULL;
}
delete [] Data; Data = NULL;
cout << "割り当てができません。これで終了します。" << endl;
exit (-1);
}