|
1
16
它是 不 使用注释中的代码更新问题之后:strcpy和sprintf调用都是堆栈损坏的最佳候选。我在最初的回答中提到的缓冲区溢出问题。猜猜看:现在的NPLIK看起来 非常 小的。函数的作用是:将过多的字符写入缓冲区,并覆盖“canary”。当金丝雀被踩在地上时,运行库将鸣笛(fowl:)
|
|
2
2
我经历了一个非常类似的问题,代码崩溃
|
|
|
3
0
找到了! 在我给出代码之前,culrpit就已经出现了,但是Hans Passant给了我一个线索,告诉我应该看什么。它看起来像这样:
所以,我今天添加了第三个if哪个用户“piesnPlik”变量。但是“nazwaNagraniaMP3”比复制到那里的另外两个变量长,所以它破坏了堆栈。但令人难以置信的是,它成功地与所有SDL的东西之后,只有崩溃后,从功能返回。
|
|
|
4
0
一点也不奇怪。当涉及到堆栈溢出或堆损坏时,您应该预料到奇怪的情况。堆栈指针、程序计数器或其他程序状态已损坏,因此调试器或跟踪工具无法准确报告崩溃时程序所在的位置。这个bug可能在代码的其他地方,远离您发布的代码片段。从最近修改的代码开始。 正如您发现的那样,您自己已经编写了一个很好的堆栈损坏示例。无论如何,这里有一个:
|