"...Algun experto en el tema que pueda ayudarme?..."
Bueno no soy un experto pero te puedo echar un cable :))
Tienes que trabajar con la referencia tanto en la llamada como en las asignaciones de la funcion:
Código C:
Ver originalvoid nueva(int **mat) {
int i;
*mat
= malloc(2 * sizeof(int *)); for(i=0;i<2;i++){
(*mat
)[i
] = malloc(2 * sizeof(int *)); }
}
Y para la llamada envias la referencia:
Alternativamente puedes crear una funcion que retorne el nuevo bloque de memoria:
Código C:
Ver originalint **nueva() {
int **mat, i;
if(!(mat
= malloc(2 * sizeof(int *)))) { return 0;
}
for(i=0;i<2;i++){
if(!(mat
[i
] = malloc(2 * sizeof(int *)))) { return 0;
}
}
return mat;
}
En este segundo metodo la llamada retorna el nuevo bloque:
Lo del los valores de retorno es una buena practica; normalmente se usa el 0 como finalizado sin error, y >0 como indice de error.
En cualquier caso recuerda que para cada malloc necesitas un free.
Saludos
vosk