简单的malloc函数在c

0 c malloc

#define SIZE 7000

static char buf[SIZE]; 
static char *bufptr = buf;

struct node 
{
    int reg_num;
    int val;
    char var_name[30];
    char var_str[100];
    struct node *memroy;
    struct node *next;
};

struct node* add(struct node *head, int i)
{
    struct node *temp;

    if (head == NULL)
    {
        temp = (struct node *)malloc(sizeof(struct node));
        temp->next = NULL;
        temp->reg_num = i;
        head = temp;
    }
    else
    {
        head->next = add(head->next, i);
    }
    return head;
} 


void* malloc(int n) 
{
    if (buf + SIZE - bufptr >= n) 
    { 
        bufptr += n;
        return bufptr - n;
    }
    else
    {
        return NULL;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行我的程序时,它在分配期间崩溃temp->next = NULL.

我认为问题出在我的malloc函数中.我malloc在库中测试它并且它正常工作,但我不允许使用库并且必须编写新malloc函数.

Ere*_*ith 7

你永远不会检查你的回报,malloc但你知道它可以return NULL;.
检查是否tempNULL在做之前temp->next = NULL;