数组内存中分布情况
- 二维数组
注意栈中地址是从高地址向低地址生长:
1 | (gdb) p/x &arr[0][0] |
即如下图走向:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 0 1 2 3
0 ------------------->
1 ------------------->
2 ------------------->
3 ------------------->
```
0. 一维数组在内存中的分布情况:
```c
(gdb) p/x &a[0]
$1 = 0x7fffffffe460
(gdb) p/x &a[1]
$2 = 0x7fffffffe464
(gdb) p/x &a[2]
$3 = 0x7fffffffe468
(gdb) p/x &a[3]
$4 = 0x7fffffffe46c
(gdb) p/x &a[4]
$5 = 0x7fffffffe470
(gdb) p/x &a[5]
$6 = 0x7fffffffe474
1 | 低地址 高地址 |
c中栈是由高地址向低地址延伸,堆则是从低地址想高地址延伸
1
2
3
4
5
6
7
8
9栈底
___________
| a[5] | 高地址
| a[4] |
| a[3] |
| a[2] |
| a[1] |
| a[0] | 低地址
栈顶C程序内存中的组织形式
【代码区 】 高地址
【静态数据区 】
【栈 】
-----------
-----------
-----------
-----------
【 堆 】 低地址