c - C - 使用带有 ** 参数的函数释放结构的分配内存
问题描述
所以我遇到了一个释放字典类型分配内存的函数的问题。
这是我使用的结构和功能:
struct word_count_t {
char *word;
int counter; //how many times word was repeated
};
struct dictionary_t
{
int size; //number of words
int capacity; //capacity of wc
struct word_count_t *wc; //pointer to words
};
void destroy_dictionary(struct dictionary_t** d)
{
if(d == NULL) return;
int i;
for(i = 0; i < d->size; i++)
{
free(d->wc->word+i);
}
free(d->wc);
free(d);
}
当函数声明如下时它正在编译:
void destroy_dictionary(struct dictionary_t* d)
如果需要,我不知道如何在此处取消引用并消除以下错误:
[Error] request for member 'size' in '* d', which is of pointer type 'dictionary_t*' (maybe you meant to use '->' ?)
解决方案
您需要先取消引用d
。
for (i = 0; i < (*d)->size; i++)
{
free((*d)->wc->word+i);
}
推荐阅读
- docker - 在 Docker 容器中运行 Puppeter
- veins - 接收开始:在运行 Venes_inet 示例时未尝试
- swift - 创建的按钮出现在游戏中的其他场景中
- php - 自定义 Woocommerce 结帐字段在页面加载后恢复为默认值
- ruby-on-rails - Rails - 多个线程以避免松弛的 3 秒 API 响应规则
- java - 为什么我找不到迭代器的值?
- python - 根据各列的 True 或 False 值过滤行
- python - Python 文件未附加在 Raspberry Pi 上
- python - 类型不正确。预期的 pk 值,在 DRF 中收到 str。(一对一字段)
- css - CSS:将最大高度设置为与“无”最大高度时高度相同的值?