- pides memoria para todos los enteros de una vez, considerando todas las filas y columnas, como si fuera un gran arreglo contiguo y luego haces la aritmetica tu mismo.
- pides memoria para distintas filas, cada fila es un arreglo unidimensional. Para este caso, pides memoria para direcciones de memoria por cada fila (como CASI lo haces en la linea 12, CASI porque pides memoria para enteros, no para direcciones de memoria) y luego pides memoria para todos los elementos en cada fila, como bien lo haces en la linea 24.
Como has decidido la 2da opcion (pedir memoria por filas):
1. Cambia la linea 12 para que diga sizeof(int *) en vez de sizeof(int)
2. Luego creo que podrias usar
Código
o
&punmem[i][j] (linea 35)
Código
, sin hacer la aritmetica explicita que haces.
punmen[i][k] (linea 39)
La aritmetica que haces tiene solo sentido si en la linea 12 en vez de pedir memoria para 1 fila, pides memoria para todas las filas y columnas. No es el caso, veo que estas intentando acceder a memoria mas alla de lo que has solicitado.