简单的malloc函数在c

时间:2015-06-09 12:47:13

标签: 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;
    }
}

当我运行我的程序时,它会在作业temp->next = NULL期间崩溃。

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

2 个答案:

答案 0 :(得分:7)

您永远不会检查malloc知道的回复return NULL;
在执行temp;

之前,请检查NULL是否为temp->next = NULL

答案 1 :(得分:-2)

我的问题与指针的种类和从CookieManager cookieManager = new CookieManager(); cookieManager.setAcceptCookie(true); 返回的值没有关系。我的malloc()大小有问题,而且我的问题大小增加了解决了。​​来自每个人。