没有动态内存分配的Lex和Yacc

6
我正在设计嵌入式环境下的软件,其中禁止使用动态内存。Lex和Yacc非常适合这种应用。
我能否配置Lex和Yacc完全不使用动态内存分配?
我能否配置Lex和Yacc使用预定义的一块内存,并限制动态内存使用到该预定义空间?
我能否将动态内存使用限制在程序初始化时(即程序第一次运行时)?
编辑: 针对TonyK的回复,我希望解析器不使用动态内存。
谢谢

2
你是否考虑过链接自己实现的 malloc 函数? - finnw
3个回答

2
当然可以,如果您能自己编译Lex和Yacc。您只需要实现自己的malloc和free,并链接到它们。(假设Lex和Yacc是纯C的,我认为是这种情况。) 编辑 我又误解了另一个问题吗?您是希望Lex和Yacc本身使用有限的内存,还是希望它们生成使用有限内存的解析器?

我希望解析器不使用动态内存。 - user572677

0

您可以使用noyyalloc、noyyfree和noyyrealloc,然后自己实现它们。


那并不能解决问题。OP被禁止使用动态内存分配。实现自己的动态内存分配不符合规则精神。 - fuz

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接