C 双指针上的分段错误

C 双指针上的分段错误,c,pointers,struct,segmentation-fault,C,Pointers,Struct,Segmentation Fault,因此,我正在尝试创建一个数据库的方法。该方法的原型如下所示 int create( Database **data, int data_size, int data_count, void(*free)(void*)); 功能说明: 如果数据为空或数据大小为0,则返回FAIL 否则,根据参数初始化数据字段 结构中的一个数据字段是Bucket**Bucket(基本上是一个Bucket数组,每个Bucket都有自己的键/值) 要初始化它,我执行了以下操作: *((*data)->bucket

因此,我正在尝试创建一个数据库的方法。该方法的原型如下所示

int create( Database **data, int data_size, int data_count, void(*free)(void*));
功能说明:
如果数据为空或数据大小为0,则返回FAIL
否则,根据参数初始化数据字段

结构中的一个数据字段是Bucket**Bucket(基本上是一个Bucket数组,每个Bucket都有自己的键/值) 要初始化它,我执行了以下操作:

*((*data)->buckets) = calloc(data_size, sizeof(Bucket));   
然而,我从中得到了一个分段错误,我假设这是我对指针的使用,但我不知道我在哪里出了问题


编辑:已解决。在我的语句前面有一个额外的指针

*数据\u ptr
从未被赋值。在将其传递给方法(或让方法分配)之前,需要对其进行设置

要么:

data_ptr=malloc(sizeof(数据库))

或者在方法上


*data=malloc(sizeof(数据库))

发布一条,仅从两行代码中无法说出。可能您没有正确分配内存。想想任何指针都指向内存中的什么地方。@MattMcNabb对不起,输入错误,已修复。我运行过gdb,seg故障来自访问这些字段。我会把我测试的内容添加到OPAh中好的,我认为错误是由于我取消引用的方式造成的,谢谢。我还有一个问题,如果你能帮我,我正在更新op