所以我正在尝试制定一种创建数据库的方法。该方法的原型(prototype)如下
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(数据库));
或者在方法中
*data = malloc(sizeof(数据库));
关于c - 双指针段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26601595/