Cita: Creo que tendrías que revisar esto:
malloc ( sizeof (int) * linhas * colunas ); va a reservar espacio en memoria para una cantidad (linhas * colunas) de ints, cuando en realidad deberías reservar esa misma cantidad (linhas * colunas) pero para punteros a int.
Sí... tienes razón. Gracias por recordar.