gpt4 book ai didi

c - 夹板有趣的错误消息

转载 作者:行者123 更新时间:2023-11-30 17:44:59 24 4
gpt4 key购买 nike

我正在一段 C 代码上运行 splint,它给出了以下语句:

jmptable.c:34:5: Implicitly only storage vm->jumptable (type struct
jumptable_entry **) not released before assignment:
vm->jumptable = (struct jumptable_entry **)calloc(vm->jumptable_size + 1,
sizeof(struct jumptable_entry *))

A memory leak has been detected. Only-qualified storage is not released
before the last reference to it is lost. (Use -mustfreeonly to inhibit
warning)

我知道夹板希望我在使用calloc分配内存之前释放内存,但由于这是在应用程序的初始化过程中,我应该担心它吗?

编辑:这就是 vm->jumptable 的初始化方式

vm->jumptable = (struct jumptable_entry**) calloc(vm->jumptable_size + 1,
sizeof(struct jumptable_entry*));

最佳答案

好的,这是第一个作业。但是下一个任务会发生什么?如果 vm->jumptable 不为空,您应该添加一个检查以释放内存。

编辑/澄清:从您包含的代码片段来看,结构的初始化是否是在可以随时调用以更改特定指针的方法中完成的并不明显。如果是这样,那么下次您尝试分配一个值(从而更改当前值)时,就会发生内存泄漏。在该方法中,确保释放前一个实例分配的内存是至关重要的。

因此,只有当您绝对确定不会使用与初始化相同的方法重新分配代码中的值时,才可以忽略该消息。

关于c - 夹板有趣的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19766315/

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