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函数。

你从来没有检查你的malloc的返回,但你知道它可以return NULL;
在执行temp->next = NULL之前检查temp是否为NULL;

我的问题与类型的指针和从
malloc()返回的值没有关系。我有buf[]的大小问题,并通过
增量的大小我的问题解决了。祝大家好运。

相关内容

  • 没有找到相关文章

最新更新