gpt4 book ai didi

c - 将魔术字节写入堆栈以监控其使用情况

转载 作者:太空宇宙 更新时间:2023-11-04 02:11:45 25 4
gpt4 key购买 nike

我在嵌入式设备上遇到问题,我认为可能与堆栈溢出有关。

为了对此进行测试,我计划用魔法字节填充堆栈,然后定期检查堆栈是否已溢出,方法是检查我的魔法字节中有多少完好无损。

但我无法让标记堆栈的例程正常工作。该应用程序不断崩溃。这是我在程序的入口点所做的。

    //fill most of stack with magic bytes
int stackvar = 0;
int stackAddr = (int)&stackvar;
int stackAddrEnd = stackAddr - 25000;
BYTE* stackEnd = (BYTE*) stackAddrEnd;

for(int i = 0; i < 25000; ++i)
{
*(stackEnd + i) = 0xFA;
}

请注意,分配的堆栈大于 25k。所以我指望此时已经使用了一些堆栈空间。另请注意,堆栈从高地址向低地址增长,这就是我尝试从下往上填充的原因。

但正如我所说,这会崩溃。我一定在这里遗漏了一些东西。

最佳答案

据我所知,您可能很容易在循环的最后几次迭代中覆盖 stackEnd 变量的内容。这显然是一件坏事,因为您在同一个循环中使用它。在你的循环中停止,比如说 24900,有帮助吗?

我建议根据您的平台上的整数大小,在经过精心计算的值处停止循环。

关于c - 将魔术字节写入堆栈以监控其使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13181910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com