6
有沒有什麼方法可以爲堆管理指定我自己的allocator/deallocator函數而不是malloc()/ free()爲野牛中的純推式解析器?野牛推送純粹解析器中的堆處理
有沒有什麼方法可以爲堆管理指定我自己的allocator/deallocator函數而不是malloc()/ free()爲野牛中的純推式解析器?野牛推送純粹解析器中的堆處理
大部分野牛的內存分配可以用宏被重定向 - 在序幕(%{
和%}
之間),你可以寫
#define YYMALLOC mymalloc
#define YYFREE myfree
然後野牛會調用mymalloc
和myfree
代替malloc
和free
。但是,它期望您提供的任何功能與標準malloc
和free
具有完全相同的類型簽名;沒有辦法讓它通過額外/不同的論點。如果我是你的話,我不會使用函數式的宏。更糟糕的是,在我的副本(Bison 2.4.1)yypstate_new
直接調用malloc
,沒有覆蓋可能 - 這可以說是一個錯誤。
是的,我已經找到了它,通過查看生成的來源。 +1並被接受,這是一個很好的答案。它在2.4.3中沒有這個bug。 – Flavius 2011-03-22 09:41:50