1)如何使用一些独特的模式初始化堆栈?所以我可以在出口检查它?示例程序PLZ 2)如何在prolog中添加值并在epilog中检查它?示例程序PLZ
感谢, VJ
答案 0 :(得分:0)
在你的第一个问题中,我认为你正在谈论防止执行堆栈过度使用。存档有不同的技术,但我认为最接近“某种独特模式”的是金丝雀。
的理论值:强>
金丝雀是一个(随机)检查值,位于函数返回地址的正下方。在从函数返回之前,系统检查金丝雀是否具有与之前相同的值。如果没有,则堆栈已超出,因为内存是从较低地址写入较高地址,并且您无法信任返回地址。
如何完成:
有关金丝雀价值的更多信息,请参见here
这种(或其他一些防止堆栈超限技术)通常在现代编译器中实现
我不知道你的第二个问题。