alloc.c初步之数据结构
来源:互联网 发布:恋爱神器软件 编辑:程序博客网 时间:2024/06/05 18:11
分析的代码是apache1.3.26版
主要涉及到3个结构
block_hdr 典型的单链表,每个内存块都带有这个头.
成员
union align a; ///用于对齐的
char *endp; ///指向buf的尾部
union block_hdr *next; ///下一块buf
char *first_avail; ///指向buf首地址 ,first_avail-endp是整块buf的大小
处理函数:
具体就不写了,主要都是分配内存,释放内存的操作,还有一些是用于调试的时候使用的,比如debug_verify_filled,将buf用0xa5填充.
block的释放是假释放,并没有调用delete,这段内存可以再利用:) block_freelist维护了一个链表用来管理释放过的内存.
pool 双端链表
union block_hdr *first;
union block_hdr *last;
struct cleanup *cleanups;
struct process_chain *subprocesses; ///指向进程链表,这个很重要啊
struct pool *sub_pools; ///指向子pool
struct pool *sub_next;
struct pool *sub_prev;
struct pool *parent; ///指向父pool
char *free_first_avail; ///跳过pool header
这里都是链表的操作,一笔代过,有兴趣的可以看看,
table
array_header a;
我理解是整个的一张进程内存表,没有详细分析,等看到具体的使用,再来完善这部分,呵呵
- alloc.c初步之数据结构
- lcc源代码解析之alloc.c
- 数据结构初步
- 数据结构初步
- alloc
- alloc
- alloc
- C数据结构之排序
- C 队列之数据结构
- C数据结构之单链表
- C语言之数据结构
- [C++]数据结构之单链表
- C语言之数据结构
- C++(19):STL初步之list初步
- C++(20):STL初步之set初步
- C++(21):STL初步之map初步
- C语言递归的基础和数据结构的初步概念
- ubuntu 步步为营之C编程初步
- Linux下Mail命令收集
- linux用户管理命令(添加,删除,修改)
- IT牛人往事如烟之七大“先烈”篇
- 充分利用缓存提高站点性能
- DotNet同步策略
- alloc.c初步之数据结构
- RPM命令大全
- VIM QUICK REFERENCE CARD
- Windows快捷键详细列表
- vi command:
- 常用的tar和rpm命令参数列表
- CPU and RAM useful ==add RAM
- 答"请问rpm包与tar包到底有何区别??"一問
- DELPHI中MessageBox的用法