所以我试图创建一个创建数据库的方法。该方法的原型如下
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));
但是,我从这里得到了一个分段错误,我认为这是我对指针的使用,但我不知道我在哪里出错了
编辑:解决了。在我的陈述前面有一个额外的指针答案 0 :(得分:1)
*data_ptr
分配值。您需要在将其传递给方法之前进行设置(或让您的方法分配它)
或者:
data_ptr = malloc(sizeof(Database));
或方法
*data = malloc(sizeof(Database));