Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-03-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Esta instruccion
Código Delphi [-]
   for i:=0 to N-1 do begin
     VInstanciasAux[i]:=TInstancia.Create;
     VInstanciasAux[i]:=Self.VInstancias[i].Clon;
   end;
se puede traducir como:
Código Delphi [-]
   for i:=0 to N-1 do begin
     VInstanciasAux[i]:=TInstancia.Create;
     // VInstanciasAux[i]:=Self.VInstancias[i].Clon;
        VInstanciasAux[i]:=TInstancia.Create;
        VInstanciasAux[i]:=Copy(Self.VClasificacion);
        VInstanciasAux[i]:=Copy(Self.VDistancias);
        VInstanciasAux[i]:=Copy(Self.MatrizCG);
        VInstanciasAux[i]:=Self.Inercia;
        VInstanciasAux[i]:=Copy(Self.VectorCardi);
   end;
Como ves, estas creando y volviendo a crear la misma variable.
La primera vez que lo creas VInstaciaAux[i] apunta a un lugar de memoria, que cuando no lo necesites mas deberás liberar.
Cuando le asignas la segunda creación, apuntará a otro lugar de la memoria y te habrá quedado una instancia en el limbo.

Esto es el error que veo, pero podría haber otros, dependiendo de como trates a las instancias generadas cuando modificas el tamaño del array VInstanciasAux.
Responder Con Cita
  #2  
Antiguo 10-03-2012
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Poder: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Antes de liberar un array que contiene instacias de objetos, deberías recorrerlo y liberar cada objeto contenido.
Código Delphi [-]
  for i := 0 to LargoDe(VInstanciasAux) -1 do
     VInstanciasAux[i].Free;
  VInstanciasAux:=nil;
Lo mismo vale para cuando cambias el tamaña a uno menor. Deberías recorrer la parte "sobrante" liberando objetos antes de aplicar el nuevo tamaño.
Responder Con Cita
  #3  
Antiguo 12-03-2012
TecnoBestia TecnoBestia is offline
Miembro
 
Registrado: jun 2010
Posts: 35
Poder: 0
TecnoBestia Va por buen camino
Gracias

Muchas gracias.

No sabía que debía liberar objeto por objeto antes de asignarle nil a un vector. Pero me quedó claro.

Gracias por su tiempo, me ha ayudado mucho.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Día mundial por la liberación de la cannabis. poliburro La Taberna 60 24-10-2024 14:17:55
Liberación de memoria de Tbitmap Marck Silencer Gráficos 11 27-01-2011 08:29:06
Liberación de un Form No Modal vejerf OOP 1 06-09-2010 19:41:20
Liberación de memoria de punteros Data de un Tree. afxe Varios 5 20-06-2007 17:12:34
Liberación de memoria Jome OOP 5 22-02-2007 14:44:56


La franja horaria es GMT +2. Ahora son las 05:19:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi