Този сайт работи по-добре с JavaScript.
Начало
Каталог
帮助
返回水杉在线
登录水杉在线
登录水杉码园
10213903403
/
os_kernel_lab
Наблюдаван
1
Харесван
0
Разклонения
0
Код
Задачи
0
Заявки за сливане
0
Версии
0
Уики
Activity
Преглед на файлове
Update kr_malloc_free.md
main
chyyuu
преди 9 години
родител
d7397bc33a
ревизия
b723a05fd1
променени са
1 файла
, в които са
добавени 7
реда и са
изтрити 0
реда
Разделен изглед
Diff Options
Показване на статистика
Download Patch File
Download Diff File
+7
-0
related_info/lab2/kr_malloc_free.md
+ 7
- 0
related_info/lab2/kr_malloc_free.md
Целия файл
@ -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()时进行遍历。
Пиши
Преглед
Зареждане…
Отказ
Запис