我正在用C编写一个小型编译器来做作业,如果语法错误或程序用完了内存,我需要释放为AST节点分配的内存。
AST是动态生成的,节点被定义为保存节点类型(程序,var,cst,表达式,语句,赋值等),它们的值及其子代的结构。
我写了一个递归方法,该方法解析树,然后逐个释放节点。但是,为了使它起作用,我需要第一个节点,例如树的根。有什么办法可以使全局变量将地址存储到第一个动态生成的节点?我已经尝试过声明一个* node指针'start',并且在创建第一个节点'x'时添加'start = x',但这会带来很多问题(树中的每个NULL子代都会成为BAD_ACCESS错误)< / p>
因此,简而言之,我需要能够引用程序稍后创建的第一个节点。帮助吗?