C++二维数组的动态内存申请后,怎么判断成功与否

C++二维数组的动态内存申请后,如何判断成功与否?
int **pi=new int*[a]; int i; for(i=0;i<a;i++)pi[i]=new int[b];难道都用if(pi==NULL)return;吗?

------解决方案--------------------
new是会抛异常的。

------解决方案--------------------
if(pi == 0) return;
for(int i = 0; i < a; i++)
if(pi[i] == 0) return;

------解决方案--------------------
提醒楼主,如果想对new内存成功与否进行判断,要用try catch进行捕获,new不会返回NULL。