[fpc-pascal] Problem with objects

Dennis Poon dennis at avidsoft.com.hk
Wed Dec 23 12:13:52 CET 2015



Santiago Amposta wrote:
> Hello:
> 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?
>
Did you call A.Create before calling TestDerived? Maybe A.List was not 
initialized (which is done in constructor Create) and contains an 
invalid pointer (to dynamic array of string).
When you call SetLength, it decrements the reference count of A.List 
(which is not nil) and raisesSIGSEGV.

Dennis



More information about the fpc-pascal mailing list