主题中讨论的其他器件:C2000WARE、 SysConfig
应用报告 SPRA820 提出了一种检测堆栈溢出的方法、但我对其真正的有效性存疑。
在该应用中、定义了一个小窗口(8个字)、由一个观察点监控、靠近有效栈的末尾(较低地址)-请参阅上面文档中的第3.1节。 当某些代码开始对监测的空间进行重新编号时、只是因为堆栈指针向该区域的最下方移动、会触发某个事件以向其发送信号。 乍一看、这似乎是一个足够好的解决方案、但我怀疑在调用这样的函数时(始终)这一点是正确的:
int foo(int x)
{
int buffer[100];
int var = x;
...
}
如果 μ`buffer
`恰巧从起始分配 之前 监控窗口和结束 之后 它、从不 完全地 写入时、不能保证它会触发溢出。 同时、μ`var
`单独分配可以修改意外区域中的数据(远低于堆栈区域)。 此函数甚至可以在销毁有价值的数据后成功返回、而不留下任何迹线。
在我看来、这种考虑是否成立了?