Allora, compilando (su visual studio 6.0) il programma che hai scritto tu mi va tutto liscio, solo che apportando le modifiche al mio lo stesso mi da un errore a runtime..
Ecco la mia funziona alloca :

codice:
void alloca_matrice(int ***m ,int r ,int c){
	int i,j;
	*m = (int **) malloc ( r * sizeof(int *) );  
	
             for(i=0;i<r;i++){
		printf("\nAllocata riga %d",i+1);
		*(*m+i) = (int *) malloc( c * sizeof(int) );
	}
	for(i=0;i<r;i++)
		for(j=0;j<c;j++)
			m[i][j] = 0;
		
	for(i=0;i<r;i++){
		printf("\n");
		for(j=0;j<c;j++)
			printf("\t%d\t",m[i][j]);
		}
}