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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Liberar memoria asignada a una estructura
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Liberar memoria asignada a una estructura  (Leído 2,299 veces)
David8

Desconectado Desconectado

Mensajes: 50


Ver Perfil
Liberar memoria asignada a una estructura
« en: 24 Mayo 2014, 19:32 pm »

Imaginemos que tenemos una estructura tal que:
Código
  1. struct estructura{
  2. // miembros
  3. };
  4.  
  5. struct estructura *variable;

y ahora
Código
  1. variable = malloc(5 * sizeof(*variable));

Quería saber si liberar la memoria así:
Código
  1. for(i = 0; i < 5; i++){
  2. free( (variable + i) );
  3. (variable + i) = NULL;
  4. }

es correcto.

Un saludo.


En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Liberar memoria asignada a una estructura
« Respuesta #1 en: 24 Mayo 2014, 23:50 pm »

No lo es. La función malloc reserva un bloque con (al menos) el tamaño indicado y retorna su dirección. Para liberar ese bloque se debe llamar a la función free con la mentada dirección como argumento.

Siguiendo tu ejemplo la forma correcta es:
Código
  1. free(variable);

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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