双指针上的分段错误

时间:2014-10-28 05:43:54

标签: c pointers struct segmentation-fault

所以我试图创建一个创建数据库的方法。该方法的原型如下

int create( Database **data, int data_size, int data_count, void(*free)(void*));

功能细节:
如果data为null或data_size为0,则返回FAIL
否则,根据参数

初始化数据字段

结构中的一个数据字段是Bucket ** buckets(实际上是一个桶数组,每个都有自己的键/值) 为了初始化我做了:

*((*data)->buckets) = calloc(data_size, sizeof(Bucket));   

但是,我从这里得到了一个分段错误,我认为这是我对指针的使用,但我不知道我在哪里出错了

编辑:解决了。在我的陈述前面有一个额外的指针

1 个答案:

答案 0 :(得分:1)

永远不会为

*data_ptr分配值。您需要在将其传递给方法之前进行设置(或让您的方法分配它)

或者:

data_ptr = malloc(sizeof(Database));

或方法

*data = malloc(sizeof(Database));