[fpc-pascal] Re: Problems with assigning pointers
Jürgen Hestermann
juergen.hestermann at gmx.de
Wed Apr 11 11:43:46 CEST 2012
Vincent Snijders schrieb:
>> type
>> TVertex = record
>> x: double;
>> y: double;
>> end;
>> PVertex = ^TVertex;
>>
>> TEdge = record
>> v1: PVertex;
>> v2: PVertex;
>> end;
.
.
>> Result := @vert_list[vert_count - 1];
>
> I think this is not correct. If you increase the size of vert_list,
> then the array may be relocated and Result isn't a valid pointer
> anymore.
True.
I think it would be better to change the type of "vert_list" to
type vert_list : array of PVertex;
This would have two advantages:
1.) Array sorting and reallocation would be faster because only a
pointer to each element is stored in the array and if the element type
is changed (increases in size) it would not affect performance.
2.) Assignments as "Result := @vert_list[vert_count - 1];" would convert
to "Result := vert_list[vert_count - 1];" and therefore references to
the element itself would be unaffected by array resorting.
More information about the fpc-pascal
mailing list