[fpc-pascal] Problem with objects
dennis at avidsoft.com.hk
Wed Dec 23 16:49:47 CET 2015
Santiago A. wrote:
> El 23/12/2015 a las 12:13, Dennis Poon escribió:
>> 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.
>> fpc-pascal maillist - fpc-pascal at lists.freepascal.org
> It's an object, not a class inherited from Tobject, so it hasn't create
Even if it is an object, you can still define a constructor.
A constructor should initialize the memory area of the object to 0, even
if you don't explicitly assign List := nil;
It is safer to call this constructor before you handle the List.
The fact that it raises SIGEGV in TestDervived but not in TestSimple
might just be a random luck in how the compiler handles the memory space
You should not rely on this behavior.
More information about the fpc-pascal