Opa, acho que isso resolve minha questão: http://delphi.about.com/od/adptips2006/qt/newdelphirecord.htm
constructors e destructors automáticos. 2008/7/4 Davi Eduardo Borges Wall <[EMAIL PROTECTED]>: > > Muito legal as perguntas e respostas! > > Eu ainda diria para você tomar de costume sempre que possível inicializar > variáveis. É uma boa prática de programação e evita problemas futuros. > > []'s > > ________________________________ > > De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Joao > Morais > Enviada em: sexta-feira, 4 de julho de 2008 15:37 > > Para: delphi-br@yahoogrupos.com.br > Assunto: Re: [delphi-br] Dúvida com Record > > Guionardo Furlan wrote: > > TReg = record > > private > > FInicializado: Boolean; > > FData: array of string; > > function GetCount: Integer; > > function SetCount(const Value: Integer); > > public > > property Count: Integer read GetCount write SetCount; > > property Data[Index: Integer] read GetData write SetData; > > end; > > <snip> > > 1. Quando eu defino uma variável com o tipo TReg, o campo FInicializado > > Booleano é *sempre* criado como False? > > Ao instanciar uma classe, sim. Record eu me arrisco a dizer que não, uma > vez que ele não tem uma rotina de inicialização como uma classe. > > Se a variável desse record for global, possivelmente ele será > inicializado. Se for dentro de uma procedure, function ou method, mais > provável que não. > > > 2. Após vários processos em que o tamanho da array de strings FData é > > modificado, pode ocorrer vazamento de memória? > > Não. Array dinâmico possui contagem de referência e ele é destruído tão > logo saia de escopo, assim como acontece com ansi strings. > > > Num sistema, criei um record similar a este, e depois disso, começaram a > > aparecer mensagens do FastMM falando sobre vazamento de memória com tipos > > string, que não estou conseguindo identificar. > > Você cria alguma coisa dinamicamente, tal como instância de classes ou > através da procedure new? Talvez a string esteja em um array, e este > array esteja associado a alguma outra área de memória, tal como um > objeto ou uma variável dinâmica? > > > No NG, recebi dicas para utilizar classes ao invés de records, mas foi o que > > me pareceu mais econômico, já que as variáveis record serão acessadas > > localmente, dentro de outras classes. > > A única economia ao utilizar record é não precisar instanciar, e seus > métodos receberem um parâmetro a menos (que no caso da classe é o > ponteiro da instância) mas será que realmente vale a economia? > > Joao Morais > -- Timeo hominem unius libri Cogito ergo sum - Carpe diem []s Guionardo Furlan http://guionardo.blogspot.com