2011-03-21 83 views

回答

3

大部分野牛的內存分配可以用宏被重定向 - 在序幕(%{%}之間),你可以寫

#define YYMALLOC mymalloc 
#define YYFREE myfree 

然後野牛會調用mymallocmyfree代替mallocfree。但是,它期望您提供的任何功能與標準mallocfree具有完全相同的類型簽名;沒有辦法讓它通過額外/不同的論點。如果我是你的話,我不會使用函數式的宏。更糟糕的是,在我的副本(Bison 2.4.1)yypstate_new直接調用malloc,沒有覆蓋可能 - 這可以說是一個錯誤。

+0

是的,我已經找到了它,通過查看生成的來源。 +1並被接受,這是一個很好的答案。它在2.4.3中沒有這個bug。 – Flavius 2011-03-22 09:41:50