#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[]
的大小问题,并通过
增量的大小我的问题解决了。祝大家好运。