int aloca(int ***x,int n,int m){
int i,j;
*x = malloc(sizeof(x)*n);
   if(*x){
       
       for(i=0;i<m;i++){
        
         *x[i] = malloc(sizeof(int)*m);
          
           if(!*x[i]){
            break;
           }
        }
   if(i<m){     
   for(j=0;j<=i;j++){
   free(*x[j]);
   }
   free(*x);
   *x=NULL;
   }
   }
return *x?1:0;
}
int main(){
    
int **b,x,y,i,j;
x=2;
y=2;
  
      if(aloca(&b,x,y)){
        for(i=0;i<x;i++){
        for(j=0;j<y;j++){
      printf("m[%d][%d]:",i,j);
      scanf("%d",&b[i][j]);
        }
        } 
      }
  
  
getche();   
}  Tudo bom?  Estou fazendo essa funcao aloca , para alocar uma matriz, o codigo compila mas na parte onde eu irei digitar os valores , quando o codigo chega no ponto onde o numero de linhas é igual ao numero de colunas , o programa fecha de modo forcado.  ex: matrix 2x2 , ao chegar no elemento b[1][1] , ele sai   gostaria de saber se alguém tem alguma ideia de que possa ser o problema  obrigado,