gpt4 book ai didi

c - 静态结构无法正常工作

转载 作者:行者123 更新时间:2023-11-30 15:44:50 25 4
gpt4 key购买 nike

我当前使用的静态结构如下所示:

typedef struct chunk_tag {
struct chunk_tag *next;
struct chunk_tag *prev;
int size;
} chunk_t;
chunk_t *morecore(int new_bytes);

它有大小、下一个和上一个。

在这下面我有几行:

static chunk_t * First = NULL;
static chunk_t * Rover = NULL;

然后它进入如下所示的函数:

void *Mem_alloc(int nbytes)
{
chunk_t *p = NULL;
//chunk_t *q = NULL;
chunk_t *best;
int blocks;
blocks = nbytes/sizeof(chunk_t);
if(nbytes % sizeof(chunk_t) != 0)
{
blocks++;
}

if(First == NULL)//means new page
{
First = morecore(PAGESIZE);
if(First == NULL)
{
return p;
}

First->size = 0;
Rover->size = PAGESIZE / sizeof(chunk_t)-1; //this line segfaults
First->prev = (First + 1);
First->next = (First + 1);
Rover = First->next;
Rover->prev = First;
Rover->next = First;
requests++;
}

正如你所看到的,我正在尝试将一些东西放入流动站的大小中。上面的行将零放入第一个大小。但是,当流动站的大小应该等于这个小方程时,它就会出现段错误。我知道这不是方程式,因为当我将其放入第一个尺寸时,它可以正常工作。即使我尝试将 0 放入流动站大小,它也会出现段错误。

有什么想法吗?

最佳答案

当然,它在那里崩溃了,在第一次调用 Mem_alloc 时,变量 Rover 此时仍然指向 NULL

关于c - 静态结构无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19309165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com