[fpc-pascal] Array clearing
Jürgen Hestermann
juergen.hestermann at gmx.de
Tue Apr 4 18:50:40 CEST 2017
Am 2017-04-04 um 16:54 schrieb Ryan Joseph:
>> var arr : array of array of Integer;
>> begin
>> SetLength(arr, 10, 10);
> “then the first array stores a pointer to each sub array.”
> Could you illustrate this is code?
> I don’t think I’m understanding this exactly like it’s represented in memory.
> There’s only one “sub array” in this 2x2 array so how does that look in memory?
Why 2x2?
SetLength(arr,10,10) creates a 10x10 array.
I am trying to show the memory allocation for the 10x10 array as a "graphic":
arr --> arr[0],arr[1],arr[2],arr[3],arr[4],arr[5],arr[6],arr[7],arr[8],arr[9]
| | | | | | | | | |
V V V V V V V V V V
arr[0,0], . . . . . . . arr[9,0],
arr[0,1], . . . . . . . arr[9,1],
arr[0,2], . . . . . . . arr[9,2],
arr[0,3], arr[9,3],
arr[0,4], arr[9,4],
arr[0,5], arr[9,5],
... ...
arr is a single pointer (that points to arr[0]).
arr[0] to arr[9] are (10) pointers located in a continuous memory block each pointing to
arr[0,0],
arr[1,0],
arr[3,0], and so on...
arr[0,0] is a single integer.
arr[0,0] to arr[0,9] are (10) integers located in a continuous memory block.
The same applies for
arr[1,0] to arr[1,9],
arr[2,0] to arr[2,9],
arr[3,0] to arr[3,9], and so on.
More information about the fpc-pascal
mailing list