仅在任务切换时检查任务栈指针是否超出了栈的末端,开销最小但可能漏检。
在任务创建时向其栈空间写入一个已知“水印”模式,并在每次任务切换时检查该模式是否被破坏。
依赖于硬件 MPU (内存保护单元) 来捕获非法的栈内存访问,并产生一个 fault 异常。
在每次函数调用时,由编译器插入额外的代码来检查栈顶标记,提供最强的保护但性能开销巨大。
这道题你会答吗?花几分钟告诉大家答案吧!
扫描二维码,关注牛客网
下载牛客APP,随时随地刷题