有没有办法为野牛中的纯推送解析器指定我自己的分配器/释放器函数来进行堆管理而不是 malloc()/free()?
问问题
556 次
1 回答
3
Bison 的大部分内存分配都可以用宏重定向 - 在序言中(在%{
和之间%}
)你可以写
#define YYMALLOC mymalloc
#define YYFREE myfree
然后 Bison 将调用mymalloc
andmyfree
而不是malloc
and free
。malloc
但是,它希望您提供的任何函数都具有与标准和free
;完全相同的类型签名。没有办法让它传递额外/不同的参数。如果我是你,我不会使用类似函数的宏。更糟糕的是,在我的副本(Bison 2.4.1)中直接yypstate_new
调用malloc
,不可能覆盖——这可以说是一个错误。
于 2011-03-21T21:20:12.153 回答