背景 近期在给一个项目换一些底层接口的日志处理部分。把原始的类 printf 的格式化方式换成 fmtlib / C++ 20 Text Formatting 的方案。 然后发现,替换完一段未执行的代码后,会发生内存写坏的情况。 问题分析 通过跟踪生成的汇编和 gdb 的 info frame 位置。发现替换之后,栈帧位置大幅增加了。比如对这类代码:…
背景 近期在给一个项目换一些底层接口的日志处理部分。把原始的类 printf 的格式化方式换成 fmtlib / C++ 20 Text Formatting 的方案。 然后发现,替换完一段未执行的代码后,会发生内存写坏的情况。 问题分析 通过跟踪生成的汇编和 gdb 的 info frame 位置。发现替换之后,栈帧位置大幅增加了。比如对这类代码:…
讨论
登录后参与讨论
还没有评论,来说第一句吧。