elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C] Explicación de cómo hacer arreglos multidimensionales dinámicos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C] Explicación de cómo hacer arreglos multidimensionales dinámicos  (Leído 2,206 veces)
eenube

Desconectado Desconectado

Mensajes: 2



Ver Perfil WWW
[C] Explicación de cómo hacer arreglos multidimensionales dinámicos
« en: 15 Marzo 2016, 01:31 am »

Hola a todos. He escrito este pequeño ejemplo de cómo escribir arreglos dinámicos con varias dimensiones. Espero les sirva.

Código
  1. #include <stdlib.h>
  2. #define FREE(p)   do { free(p); (p) = NULL; } while(0)
  3.  
  4. int **alloc_array(int, int);
  5. void free_array(int **, int);
  6.  
  7. int **alloc_array(int x_size, int y_size)
  8. {
  9.   int i;
  10.   int **array;
  11.   array = malloc(x_size * sizeof(int *));
  12.   if(array == NULL)
  13.   {
  14. return NULL;
  15.   }
  16.   for(i = 0; i < x_size; i++)
  17.   {
  18.       array[i] = malloc(y_size * sizeof(int));
  19.       if(array[i] == NULL)
  20.       {
  21.           return NULL;
  22.       }
  23.   }
  24.   return array;
  25. }
  26.  
  27. void free_array(int **array, int x_size)
  28. {
  29.   int i;
  30.   for(i = 0; i < x_size; i++)
  31.      FREE(array[i]);
  32.   FREE(array);
  33. }

http://eenube.com/index.php/ldp/c/18-arreglos-dinamicos-multidimensionales-en-c

MOD EDIT: Usar etiquetas GeSHi.


« Última modificación: 15 Marzo 2016, 03:24 am por MCKSys Argentina » En línea

Mi blog de programación, software libre, matemáticas y diseño gráfico libre. Espero les guste.
http://eenube.com
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: [C] Explicación de cómo hacer arreglos multidimensionales dinámicos
« Respuesta #1 en: 15 Marzo 2016, 18:41 pm »

Está bien, pero debes retocar una cosa:
Cuando vas a inicializar las columnas, y, y una de estas inicializaciones falla retornas NULL y regresas, pero esto te crea pérdida de memoria: todos los punteros anteriormente inicializados desaparecerán al salir de la función, pero su memoria seguirá adquirida.

P.ej.: Si la última inicialización de y falla pedrerás la memoria del array principal, x, y de cada una de las ys, menos la última que ha fallado.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines