Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Liberar memoria dinamica

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Liberar memoria dinamica Responder citando

Hola, espero que me puedan responder esta duda que tengo. Estoy trabajando en c++ builder 5 y estoy utilizando una estructura en la que incluyo un apuntador hacia otra estructura. En la ejecucion utilizo una funcion en la que creo un arreglo dinamico de estructuras con esta apuntador, despues regreso la estructura completa, la que incluye al arreglo de estructuras dinamico. Mi duda es acerca de como liberar ese arreglo dinamico una vez que salgo de esa funcion, pero que me quede disponible para la funcion que la llama, o el builder libera esa memoria por mi? No se si me explique, pero para que quede mas claro incluyo codigo:

//estructura para el arreglo dinamico
struct DatosVenta
{
int ID_Pedido, ID_Producto;
};

//estructura que incluye el apuntador a la otra estructura
struct DatosPedido
{
int valor;
struct DatosVenta *linea;
};

//en esta linea llamo a la funcion que me regresa la estructura ya con
//el arreglo dinamico
DatosPedido datp=SeleccionarPedido();

//en esta funcion lleno mi estructura y creo el arreglo dinamico y regreso
//la estructura llena
DatosPedido SeleccionarPedido()
{
DatosPedido datos;
//llenar datos
datos.linea=new struct DatosVenta[valor];
//llenar datos.linea
return datos
}

en esta ultima parte es donde tengo la duda de como liberar este arreglo que estoy utilizando, si es que lo debo de liberar, porque necesito esos datos para la funcion que llama.

Gracias por su ayuda!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Si no he entendido mal, la memoria dinámica que has reservado debes liberarla, pero no tiene porque ser nada más reservarla. Tu usala mientras la necesites, y una cuando no vayas a necesitar más esos datos, liberas la memoria.
La forma de liberarla sería así:
Código:

// ESTO ES LO QUE TU HAS ESCRITO

struct DatosVenta
{
int ID_Pedido, ID_Producto;
};

DatosPedido SeleccionarPedido()
{
DatosPedido datos;
//llenar datos
datos.linea=new struct DatosVenta[valor];
//llenar datos.linea
return datos
}

DatosPedido datp=SeleccionarPedido();

/* Haces con la estructrura lo que tengas que hacer */
..............................................................................


// Una vez ya no necesites más la estructura, liberas la memoria
delete datp.linea;



Espero ke te sirva
Un saludo
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.