[fpc-pascal] Initializing Records Automatically

L L at z505.com
Mon Mar 24 12:20:03 CET 2008


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.



More information about the fpc-pascal mailing list