3.10.1 理解指针
这里补充一下课上讲的关于内存的东西
虽然x86-64理论上的内存大小为\(2^{64}\),但实际上只有\(2^{47}\),于是内存的起始位置为0x00007fffffffffff(注意内存的地址是逐渐减小的,所以这是起始地址而不是结束地址;参考栈)

- Stack
- 如图所示,运行时栈
- 大小不能超过8MB,如果超过了就RE了
- Text/Shared Libraries
- 就是各种可执行文件存放的地方
- Data
- Data叫做数据区
- 一个数据段是在数据区中用来存放程序开始时分配的数据的,声明的全局变量都在这个数据段中
- Heap
- 用来存放
malloc()或者相关函数申请的变量 - 如果每次申请之后不释放的话,堆区所消耗的内存就会越来越大
- 用来存放

各个量的分配如下(可以通过GDB调试程序获得)

- 如果访问了两个堆之间的白色区域,就会产生RE
- 如果两个堆之前相遇(也就是空间被分配完了),那么
malloc将不会再分配内存

浙公网安备 33010602011771号