[fpc-pascal] Initializing Records Automatically

Florian Klaempfl florian at freepascal.org
Mon Mar 24 11:30:45 CET 2008


L schrieb:
> http://stanleyxu2005.blogspot.com/2008/01/potential-memory-leak-by-initializing.html
> 
> 
> Interesting..
> 
> So with
> 
> procedure InitRecord(out R; SizeOfRecord: Integer);
> begin
>  FillChar(R, SizeOfRecord, #0);
> end;
> 
> Even if it has dynamic array, ansistrings, shortstrings, integers,
> 
> I assume it is okay to initialize it this way (assumptions are bad).
> 
> The problem: initializing records with automated types by going through
> each and every field is error prone because if you expand the record
> later on with more fields, you might forget to update your custom init
> procedure..
> 
> And a question: does old borland style "object" initialize anything as
> classes do? Stack based ones? heap ones?
> 
> Interesting pondering: what would be nicee is an auto initialized record:
> 
> procedure example;
> var something: somerec autoinit;
> begin
> end;
> 
> Many times I find myself initializing stuff tediously and error prone
> when you do it a human way without automation.

Records and objects containing automated fields are initialized? Or do I
miss something? The whole blog post is nonsense, the proper way to
finalize a record before cleaning it with fillchar is calling finalize
with the record.



More information about the fpc-pascal mailing list