[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