Lex和Yacc没有动态内存分配

时间:2011-01-10 16:22:50

标签: c++ embed memory-management yacc lex

我正在设计软件以在禁止使用动态内存的嵌入式环境中运行。 Lex和Yacc非常适合应用。

我可以将Lex和Yacc配置为根本不使用动态内存分配吗?

我可以将Lex和Yacc配置为使用预定义的内存块,从而将动态内存使用限制在该预定义空间吗?

我是否可以限制动态内存仅用于程序初始化(即程序首次运行时)?

修改 为了回应TonyK,我希望解析器不使用动态内存。

谢谢

3 个答案:

答案 0 :(得分:2)

如果你能自己编译Lex和Yacc,你当然可以。你只需要实现自己的malloc和free,并链接到那些。 (假设Lex和Yacc是纯C,我认为是这样。)

编辑我是否误解了另一个问题?你想让Lex和Yacc自己使用有限的内存,还是希望它们生成使用有限内存的解析器?

答案 1 :(得分:0)

不确定你能做到这一点 - 如果这些工具生成的C想要进行动态分配,那么你将很难停止它们。也许最好的方法是创建自己的分配系统,使用保留的内存来允许。

答案 2 :(得分:0)

您可以使用noyyalloc,noyyfree和noyyrealloc,然后自己实现这些。