Cのメモリ確保についての質問です。
三次元配列 hairetu[A][B][C]のメモリを確保するのは

if((hairetu=(double***)malloc(sizeof(double)*A))==NULL){
fprintf(stderr,"Can't allocate memory\n");
exit(1);
}

for(i=0;i<A;i++){
if((hairetul[A]=(double**)malloc(sizeof(double)*B))==NULL){
exit(1);
}
for(k=0;k<B;k++){
if((hairetu[i][k]=(double*)malloc(sizeof(double)*C))==NULL){
exit(1);
}
}
}

でできているでしょうか?
今まで二次元までしかやったことないので不安なので
誰か教えてください。