c - 双指针段错误

标签 c pointers struct segmentation-fault

所以我正在尝试制定一种创建数据库的方法。该方法的原型(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/

相关文章:

c - 理解函数指针声明

c++ - 如何在使用字符串指针变量作为输入参数的函数中使用字符串值作为参数

c - 通过引用 malloc 指向指向结构数组的指针的指针

c - 如何在 C 中声明结构以避免结构损坏?

c - 测试内存碎片

c - 如何从c程序中检索其procees id的进程状态?

c - 如何通过指针将结构元素结构传递给函数

c - 集体分配给一个结构体

C++ 结构声明和用法编译器错误

c - 取消引用指向不完整类型的指针