1
我想创建一个空闲列表来实现一个堆分配器。这里是我所定义的结构至今:访问结构成员时出现Segfault
typedef struct headerT headerT;
struct headerT{
size_t payloadSize;
struct headerT* next; // unused field to make struct 8 bytes, simplifies alignment
};
headerT* freeList;
,这里是我如何初始化我堆:
int myinit()
{
freeList = InitHeapSegment(0); // InitHeapSegment resets heap segment to empty, no pages
//allocated
freeList->payloadSize = 0;
freeList->next=NULL;
return 0;
}
我立即得到一个segfault当函数试图将有效载荷大小更改为零。我在这里错过了什么?
freeList在崩溃时的值是多少? –
请添加InitHeapSegment()的代码。当0通过时它会返回什么?从InitHeapSegment()返回的struct HeaderT是如何分配的? –