|
|

|
| Embedded Systems Programming - December 2000 - Flexible Dynamic Array Allocation
|
| FIGURE 1
|
An inside look at an example dynamic array
|
0xffbefaf8 0x00021f68
<
- arr
&arr[ 0][-1] -> 0x00021f50 0xffffffff
<
- arr[ 0][-1] (-1)
&arr[ 0][ 0] -> 0x00021f54 0x00000000
<
- arr[ 0][ 0] ( 0)
&arr[ 0][ 1] -> 0x00021f58 0x00000001
<
- arr[ 0][ 1] ( 1)
&arr[ 1][-1] -> 0x00021f5c 0x00000000
<
- arr[ 1][-1] ( 0)
&arr[ 1][ 0] ->
0x00021f60 0x00000001
<
- arr[ 1][ 0] ( 1)
&arr[ 1][ 1] -> 0x00021f64 0x00000002
<
- arr[ 1][ 1] ( 2)
&arr[ 0] -> 0x00021f68 0x00021f54
<
- arr[ 0]
&arr[ 1] -> 0x00021f6c 0x00021f60
<
- arr[ 1]
0x00021f70 0x00000000
B.
int st[2] = {-1, -1};
location contents
&arr -> 0xffbefaf8 0x00021f6c
<
- arr
&arr[-1][-1] -> 0x00021f50 0xfffffffe
<
- arr[-1][-1] (-2)
&arr[-1][ 0] -> 0x00021f54 0xffffffff
<
- arr[-1][ 0] (-1)
&arr[-1][ 1] -> 0x00021f58 0x00000000
<
-
arr[-1][ 1] ( 0)
&arr[ 0][-1] -> 0x00021f5c 0xffffffff
<
- arr[ 0][-1] (-1)
&arr[ 0][ 0] -> 0x00021f60 0x00000000
<
- arr[ 0][ 0] ( 0)
&arr[ 0][ 1] -> 0x00021f64 0x00000001
<
- arr[ 0][ 1] ( 1)
&arr[-1] -> 0x00021f68 0x00021f54
<
- arr[-1]
&arr[ 0] -> 0x00021f6c 0x00021f60
<
- arr[ 0]
0x00021f70 0x00000000
C.
int st[2] = {-25, -1};
location contents
&arr -> 0xffbefaf8 0x00021fcc
<
- arr
&arr[-25][-1] -> 0x00021f50 0xffffffe6
<
- arr[-25][-1] (-26)
&arr[-25][ 0] -> 0x00021f54 0xffffffe7
<
- arr[-25][ 0] (-25)
&arr[-25][ 1] -> 0x00021f58 0xffffffe8
<
- arr[-25][ 1] (-24)
&arr[-24][-1] -> 0x00021f5c 0xffffffe7
<
- arr[-24][-1] (-25)
&arr[-24][ 0] -> 0x00021f60 0xffffffe8
<
- arr[-24][ 0] (-24)
&arr[-24][ 1] -> 0x00021f64 0xffffffe9
<
- arr[-24][ 1] (-23)
&arr[-25] -> 0x00021f68 0x00021f54
<
- arr[-25]
&arr[-24] -> 0x00021f6c 0x00021f60
<
- arr[-24]
0x00021f70 0x00000000
|
|
|
|
|