因此,我正在尝试创建一种创建数据库的方法。该方法的原型如下
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/