Alocação dinâmica de vetores bidimensionais


int **malloc2d(int lin, int col) {
	int **t = malloc(lin * sizeof(int *));
	for (int i = 0; i < lin, ++i) {
		t[i] = malloc(col * sizeof(int));
	}
	return t;
}
 
int **a = malloc2d(3, 5);

Abaixo a representação da alocamento de memória para uma matriz 2D:

Referências