Fórum Liberar da memória todas as estancias criadas de uma classe #371718
29/06/2009
0
Tem como eu liberar da memória todas as estancias criadas de uma determinada classe?
Vamos dizer que essa classe esta criando outras estancias dela mesma...
Em um determinado momento, todo e qualquer objeto que foi criado dessa classe, gostaria de liberar da memória....
tem como?
Abraços.
[vaza]
Curtir tópico
+ 0Posts
29/06/2009
Rodc
Sugiro você usar um TList que guarde os ponteiros para estas classes, e depois percorra o TList destruindo todas as classes referenciadas nela.
Gostei + 0
29/06/2009
Edsant
Até mais...
Gostei + 0
29/06/2009
[vaza]
Amigo, poderia me dar um simples exemplo por favor?
Gostei + 0
29/06/2009
Rodc
var lista: TList; botao: TButton; x: integer; begin lista := TList.Create(); // cria primeiro botão botao = TButton.Create(self); // adiciona primeiro na lista lista.Add(botao); //cria segundo botão botao = TButton.Create(self); // adiciona segundo na lista lista.Add(botao); //cria terceiro botão botao = TButton.Create(self); // adiciona terceiro na lista lista.Add(botao); /* neste momento a lista contém o ponteiro de três classes do tipo TButton instanciadas em memória */ // Percorre a lista de botões destruindo as classes for x:=lista.Count downto 0 do begin TButton(lista[x]).Free; lista.Delete(x); end; end;
Não sei nem se vai compilar este código, pois não testei... Mas a idéia é demostrar que você criou três objetos em memória e depois destrui eles, apenas com a referência para a memória deles.
Gostei + 0
29/06/2009
[vaza]
obrigadão.
Tentarei aqui.
Gostei + 0
30/06/2009
[vaza]
Gostei + 0
30/06/2009
Rodc
A não ser que o RTTI do Delphi guarde alguma informação sobre os objetos criados...
Gostei + 0
30/06/2009
Osocram
usando TList, é o que eu faria tbm.
Apesar que depende o vc realmente precisa podemos dar outras soluções.
[quote:1446a06dc6=´[VAZA]´]Tem como eu pegar o número de instancias de uma classe sem ser por TList como no exemplo?[/quote:1446a06dc6]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)