7

有没有办法为野牛中的纯推送解析器指定我自己的分配器/释放器函数来进行堆管理而不是 malloc()/free()?

4

1 回答 1

3

Bison 的大部分内存分配都可以用宏重定向 - 在序言中(在%{和之间%})你可以写

#define YYMALLOC mymalloc
#define YYFREE myfree

然后 Bison 将调用mymallocandmyfree而不是mallocand freemalloc但是,它希望您提供的任何函数都具有与标准和free;完全相同的类型签名。没有办法让它传递额外/不同的参数。如果我是你,我不会使用类似函数的宏。更糟糕的是,在我的副本(Bison 2.4.1)中直接yypstate_new调用malloc,不可能覆盖——这可以说是一个错误。

于 2011-03-21T21:20:12.153 回答