工学1号馆

home

malloc 深入剖析3–malloc仿制品

Wu Yudong    July 27, 2016     C   626   

首先,我们将使用 sbrk(2) 来实现一个很笨拙的malloc,这个 malloc 虽然是最简单的和相当快的,但是是相当糟糕的。

1、原理
想法很简单,每次malloc被调用的时候,我们通过请求的空间来移动break,返回break的前一个地址,这个实现很简单和高效,只需要三行代码,但是我们没能实现free和relloc
这个版本的malloc浪费很多废弃的内存块空间,在这里仅仅是起到教学和使用sbrk(2)系统调用的目的 ,为了教学目的,我们将增加一些错误管理到我们的malloc实现。

本文地址:http://wuyudong.com/2016/07/27/2346.html,转载请注明源地址。

2、实现

/* 一个糟糕的malloc仿制品 */
#include <sys/types.h>
#include <unistd.h>

void *malloc(size_t size)
{
    void *p;
    p = sbrk(0);
    /* 如果sbrk操作失败,返回NULL */
    if (sbrk(size) == (void *)-1)
        return NULL;
    return p;
}

 

如果文章对您有帮助,欢迎点击下方按钮打赏作者

Comments

No comments yet.
To verify that you are human, please fill in "七"(required)