При попытке организации двух двумерных динамических массивов возникает ошибка 0xC00000FD - переполнение стека, что не так и можно ли создавать динамический массив с помощью функций(закомментированная часть)
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <time.h>
/*void arr_cr( int **a , int n, int m){
int i,j;
a=(int **)malloc(n*sizeof(int *));
for( i=0 ; i < m ; i++)
a[i]=(int *)malloc(sizeof(int));
}
*/
void arr_in( int **a, int n, int m){
int i,j;
for( i=0 ; i < n ; i++)
for( j=0 ; j < m ; j++)
a[i][j]= rand() % 300 +100;
}
void arr_out( int **a, int n, int m){
int i,j;
for( i=0 ; i < n ; i++,puts(""))
for( j=0 ; j < m ; j++)
printf("%3i",a[i][j]);
}
int main(){
int i,j,n,**X,**Y;
X=(int **)malloc(10*sizeof(int *));
for( i=0 ; i < 8 ; i++)
X[i]=(int *)malloc(sizeof(int));
Y=(int **)malloc(10*sizeof(int *));
for( i=0 ; i < 12 ; i++)
X[i]=(int *)malloc(sizeof(int));
//arr_cr(X,10,8);
//arr_cr(Y,10,12);
arr_in(X,10,8);
arr_in(Y,10,12);
arr_out(X,10,8);
arr_out(Y,10,12);
return 0;
}