c语言中的简单malloc函数

c语言中的简单malloc函数,c,malloc,C,Malloc,当我运行我的程序时,它在分配期间崩溃temp->next=NULL 我认为问题在于我的malloc函数。我在库中用malloc测试了它,它工作正常,但我不允许使用库,必须编写一个新的malloc函数。你从不检查malloc的返回,但你知道它可以返回NULL 在执行temp->next=NULL之前,检查temp是否为NULL 您从未检查您的malloc的返回,但您知道它可以返回NULL 在执行temp->next=NULL之前,检查temp是否为NULL 我的问题与malloc()的指针类型和返

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


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

你从不检查
malloc
的返回,但你知道它可以
返回NULL

在执行
temp->next=NULL
之前,检查
temp
是否为
NULL

您从未检查您的
malloc
的返回,但您知道它可以
返回NULL

在执行
temp->next=NULL
之前,检查
temp
是否为
NULL

我的问题与
malloc()
的指针类型和返回值无关。我的问题与
buf[]
的大小有关,通过
大小的增量,我的问题得到了解决。Tnx来自每个指针。

我的问题与
malloc()的指针类型和返回值无关
。我的问题是
buf[]
大小的问题,通过
大小的增加,我的问题得到了解决。每个问题都解决了。Tnx。

我不想使用sbrk()和brk(),我只需要一个简单的malloc,用于分配,而不是免费和realloc,并且…您是否尝试使用调试器来查找崩溃的地方?欢迎使用堆栈溢出!标准警告:将节点附加到列表中是一种危险且低效的方法。为避免混淆,请始终为用户定义的函数使用可区分的名称。不要使用与库函数本身相同的名称。我不想使用sbrk()和brk()。我只需要一个简单的malloc,用于分配而不是free和realloc,并且…您是否尝试使用调试器查找崩溃的位置?欢迎使用堆栈溢出!标准警告:将节点附加到列表中是一种危险且低效的方法。为避免混淆,请始终为用户定义的函数使用可区分的名称。不要使用与库函数本身相同的名称。是的,但是您必须检查
malloc
是否没有返回NULL,否则您的程序将在返回NULL时崩溃。此外,您不应该真正命名您的函数
malloc
,因为库中经常使用
stdlib
,并且会出现符号冲突。请不要在回答中评论您的问题。是的,但您必须检查
malloc
是否没有返回NULL,否则您的程序将崩溃,它将返回NULL。此外,您不应该真正命名函数
malloc
,因为库中经常使用
stdlib
,并且会出现符号冲突。请不要在回答中评论您的问题。
#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;
    }
}