C 访问结构成员时出现SEGFULT

C 访问结构成员时出现SEGFULT,c,pointers,struct,heap,C,Pointers,Struct,Heap,我试图创建一个空闲列表来实现堆分配器。到目前为止,我是如何定义结构的: typedef struct headerT headerT; struct headerT{ size_t payloadSize; struct headerT* next; // unused field to make struct 8 bytes, simplifies alignment }; headerT* freeL

我试图创建一个空闲列表来实现堆分配器。到目前为止,我是如何定义结构的:

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 resets heap segment to empty, no pages                                                  
                              //allocated     

您说InitHeapSegment将堆段重置为空,但没有分配任何页面。可能不是马洛辛。因此,freeList可能会指向您无权访问的垃圾值,从而导致SIGSEGV或分段冲突错误。在Windows中,此错误的类型为Cx00000005

freeList崩溃时的值是多少?请添加InitHeapSegment的代码。传递0时它返回什么?如何从正在分配的InitHeapSegment返回struct HeaderT?