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

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));


但是,我从中得到了一个分段错误,我认为这是我使用指针的结果,但是我看不出它出了什么问题。

编辑:解决。我的发言前面有一个额外的指针

最佳答案

*data_ptr从未分配值。您需要先对其进行设置,然后再将其传递给您的方法(或让您的方法对其进行分配)

要么:

data_ptr = malloc(sizeof(Database));

或在方法中

*data = malloc(sizeof(Database));

关于c - 双指针段错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26601595/

10-11 22:57
查看更多