gpt4 book ai didi

c - 双指针段错误

转载 作者:行者123 更新时间:2023-11-30 20:26:09 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com