Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/07/2014, 17:25
vosk
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: problema con funciones y arrays dinamicos [cuadrado magico]

Te sugiero que ejecutes la aplicacion en el depurador, parece magia pero te encuentra los errores :))

Antes de nada: para que conio.h? Si no vas a usar ninguna de sus funciones puedes ahorrartela, ademas no forma parte del estandar.

Prueba a bloquear memoria dinamica para el array; primero reservas las filas y para cada fila las columnas, algo asi:

Código C:
Ver original
  1. int **arr = 0;//puntero nulo
  2. *arr = malloc(sizeof(int)*i);//reservas memoria para 'i' filas
  3. for(j = 0; j < i; j++) {
  4.     arr[j] = malloc(sizeof(int)*i);//para cada fila reservas memoria para 'i' columnas
  5. }

Puedes hacerlo de otras formas; si usas esta vas a acceder a las posiciones del array de forma:

Código C:
Ver original
  1. array[fila][columna]

Ya tienes el array listo, y lo envias tal cual a las funciones de inicio y populado.

Recuerda que para cada malloc necesitas un free, luego despues de usar el array tienes que liberar la memoria. En esta aplicacion no tiene sentido porque el s.o. se encargará de ello, pero tal vez en futuras aplicaciones tengas que reutilizar el array, ya sea para resetearlo o para redimensionarlo. En este caso la liberacion de memoria es el proceso inverso a la reserva: para cada fila liberas las columnas, y al final liberas las filas; algo asi:

Código C:
Ver original
  1. for(j = 0; j < i; j++) {
  2.     free(arr[j]);
  3. }
  4. free(*arr);

Ya lo tienes. Revisa estas lineas para entender exactamente que hacen, y ante cualquier duda ya sabes donde preguntar.

Espero que te sirva de ayuda

Saludos
vosk