Большинство выделений памяти Bison могут быть перенаправлены с помощью макросов - в прологе (между %{
и %}
) вы можете написать
#define YYMALLOC mymalloc
#define YYFREE myfree
и тогда Бизон позвонит mymalloc
и myfree
вместо malloc
и free
. Однако ожидается, что любые предоставляемые вами функции будут иметь точно такую же сигнатуру типа, что и стандартные malloc
и free
; нет способа заставить его передавать дополнительные / другие аргументы. И я бы не использовал функциональные макросы на вашем месте. Хуже того, в моей копии (Bison 2.4.1) yypstate_new
вызывает malloc
напрямую, без возможности переопределения - возможно, это ошибка.