[fpc-pascal] Problem with objects

Jonas Maebe jonas.maebe at elis.ugent.be
Wed Dec 23 18:24:36 CET 2015


Santiago Amposta wrote:

> I use fpc 2.6.4 and I have a problem of memory leaks, strange errors,
> etc. Finally I have tracked it to this:
>
> TSimpleArrayString=object
>      List:array of String;
> end;
>
> TDerivedArrayString=object(TSimpleArrayString)
>      other_field:integer;
> end;
>
> procedure TestSimple;
> var
>   A:TSimpleArrayString;
> begin
>    setLength(A.List,0);
> end;
>
> procedure TestDerived;
> var
>   A:TDerivedArrayString;
> begin
>    setLength(A.List,0);
> end;
>
>
> TestSimple; // Works Fine,
> TestDerived; // rises an exception SIGSEGV on setLength
>
> What am I doing wrong?

This is a bug in FPC 2.6.4 (it did not initialise managed fields of 
parent objects for child objects that do not declare extra managed 
fields). It is fixed in FPC 3.0.


Dennis Poon wrote:
> I think for both Record or Object, you need to initialize any dynamic
> array or strings fields before using them.

That is incorrect, the compiler takes care of it (or is supposed to, 
anyway).


Jonas



More information about the fpc-pascal mailing list