我正在设计软件以在禁止使用动态内存的嵌入式环境中运行。 Lex和Yacc非常适合应用。
我可以将Lex和Yacc配置为根本不使用动态内存分配吗?
我可以将Lex和Yacc配置为使用预定义的内存块,从而将动态内存使用限制在该预定义空间吗?
我是否可以限制动态内存仅用于程序初始化(即程序首次运行时)?
修改 为了回应TonyK,我希望解析器不使用动态内存。
谢谢
答案 0 :(得分:2)
如果你能自己编译Lex和Yacc,你当然可以。你只需要实现自己的malloc和free,并链接到那些。 (假设Lex和Yacc是纯C,我认为是这样。)
编辑我是否误解了另一个问题?你想让Lex和Yacc自己使用有限的内存,还是希望它们生成使用有限内存的解析器?
答案 1 :(得分:0)
不确定你能做到这一点 - 如果这些工具生成的C想要进行动态分配,那么你将很难停止它们。也许最好的方法是创建自己的分配系统,使用保留的内存来允许。
答案 2 :(得分:0)
您可以使用noyyalloc,noyyfree和noyyrealloc,然后自己实现这些。