10.1- 程序的内存布局(了解)
linux进程空间:
栈(stack):保存上下文。向下生长
堆(heap):动态分配内存。向上生长
可执行文件映像:
保留区
10.2- 栈和调用惯例
10.2.1- 什么是栈(stack)
用于保存以下内容:
函数返回值、参数;
临时变量;
上下文
esp保存栈顶;ebp函数活动记录。了解esp、ebp工作原理(阅读P287-293)。
10.2.2- 调用惯例(了解、很不错)
函数入参压栈从右向左。
10.2.3- 函数返回值传递(一般了解)
对于返回值较大的参数,会进行两次拷贝。不建议返回较大尺寸参数。P302
10.3- 堆管理
10.3.1- 什么是堆
10.3.2- linux进程堆管理
10.3.3- windows进程堆管理
10.3.4- 堆分配算法
空闲链表;
位图;
对象池(一次性分配一大块内存,将这大块内存等分成若干个内存块,可以使用链表、位图组织内存块):推荐使用该方式。
P315堆分配算法根据实际情况可能是几种算法混合使用