This website works better with JavaScript.
Home
Explore
帮助
返回水杉在线
登录水杉在线
登录水杉码园
10213903403
/
os_kernel_lab
Watch
1
Star
0
Fork
0
Code
Issues
0
Pull Requests
0
Releases
0
Wiki
Activity
Browse Source
Update kr_malloc_free.md
main
chyyuu
9 years ago
parent
d7397bc33a
commit
b723a05fd1
1 changed files
with
7 additions
and
0 deletions
Split View
Diff Options
Show Stats
Download Patch File
Download Diff File
+7
-0
related_info/lab2/kr_malloc_free.md
+ 7
- 0
related_info/lab2/kr_malloc_free.md
View File
@ -2,6 +2,13 @@
## 来源
from [
malloc/free函数的简单实现及思考
](
http://www.cnblogs.com/wuyuegb2312/archive/2013/05/03/3056309.html
) by 五岳
## run
&
debug
try to
```
gcc -g -O0 -o kr_malloc_free kr_malloc_free.c
gdb kr_malloc_free
```
## 简单思路
### 管理free block的数据结构
仅仅依靠地址运算来进行定位,是限制分配回收灵活性的原因,它要求已使用部分和未使用部分必须通过某个地址分开成两个相邻区域。为了能让这两个区域能够互相交错,甚至其中还包括一些没有分配的地址空间,需要使用指针把同类的内存空间连接起来形成链表,这样就可以处理地址不连续的一系列内存空间。但是为什么只连接了空闲空间而不连接使用中的空间?这么问可能出于在对图中二者类比时的直觉而没有经过思考,这很简单,因为没有必要。前者相互链接是为了能够在内存分配时遍历所有空闲空间,并且在使用free()回收已使用空间时进行重新插入。而对于使用中的空间,由于我们在分配空间时已经知道它们的地址了,回收时可以直接告诉free(),并不用像malloc()时进行遍历。
Write
Preview
Loading…
Cancel
Save