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;
}
}