当前位置:嗨网首页>书籍在线阅读

09-练习

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.4 练习

7-1.  修改程序清单7-1中的程序(free_and_sbrk.c),在每次执行malloc()后打印出program break的当前值。指定一个较小的内存分配尺寸来运行该程序。这将证明malloc()不会在每次被调用时都调用sbrk()来调整program break的位置,而是周期性地分配大块内存,并从中将小片内存返回给调用者。

7-2.  (高级)实现malloc()和free()。

①译者注:遵作者邮件嘱改动原文,据称此为编译器提高内存访问效率的举措之一。

②译者注:详见http://en.wikipedia.org/wiki/Off-by-one_error。

③译者注:参见图7-3堆中空闲内存块与已分配内存块的“杂居”状态,此处应指与ptr指向的已分配内存块的地址相邻的空闲内存块。

④译者注:简而言之,该内存块的起始地址是alignment参数的整数倍。

⑤译者注:通过调整栈指针自然释放了栈中所分配的内存。