释放`%`union中用作模型的`struct`中的指针

时间:2018-08-30 19:11:39

标签: c bison

在野牛%union(尤其是Include struct in the %union def with Bison/Yacc)中,有几个很好的问题要解决结构的使用,但是,如果定义了带有指针的struct,我认为他们无法指定,然后使用这些指针(因此我必须为其分配一些内存),谁负责free(void *)

在这种情况下我应该负责释放指针吗?

如果发生内存错误,该如何调试?

1 个答案:

答案 0 :(得分:2)

完成处理后,需要释放指针。这意味着在使用这些指针进行减少操作的动作中,您需要在该动作中执行该动作(除非将指针复制到其他“拥有”它们的地方)。

棘手的部分是错误恢复-语法错误后,野牛会弹出并丢弃项目以尝试恢复。幸运的是,bison提供了%destructor指令,该指令可用于清理,并在这些指针被丢弃时释放它们。

相关问题