问题标签 [stack-corruption]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
322 浏览

c++ - c++ CRTP堆栈损坏

在 MSVC 2013,x64 调试配置上运行以下代码时,退出 main() 函数时,它将显示一个带有此著名错误消息的消息框

我无法回答的问题是:为什么?

请注意,在发布配置上运行时不会出现错误消息。(为什么?)

免责声明:这只是一个示例代码,这意味着我正在尝试在其他类(一个基类和几个派生类)上使用相同的设计,具有更多的方法和模板参数以及比基本 int* 更复杂的数据类型.



编辑: @Yakk,如果我理解正确,您建议将此代码作为解决方案:



它工作得很好,谢谢。我可能会使用这种模式,因为似乎没有解决方案可以将 CRTP 用于我正在尝试做的事情。

但我仍然想了解为什么会发生堆栈损坏。尽管所有关于使用或不使用 CRTP 的所有讨论,我都想非常准确地理解它为什么会发生。

再次感谢你。

0 投票
4 回答
616 浏览

c++ - 变量“temp”周围的堆栈已损坏

我正在尝试将包含由空格分隔的多个值的 std::string 转换为向量对象。我让它工作(意味着调试器在算法结束时在向量中显示正确的值),但是我遇到了一个我以前从未见过的异常​​。例外情况如下:

我得到的例外。

我以前从未见过这种情况,并且我已经研究了一个小时来研究导致这种情况的原因,但我仍然不明白。

我导致异常的算法如下:

我不知道如何解决这个问题。正如我所说,算法在我得到正确结果的意义上“有效”,我只需要清除异常。我该如何解决?

0 投票
1 回答
497 浏览

c++ - 变量周围的堆栈已损坏

我有以下程序,其中我使用密钥长度为 256 位的 AES_CBC 加密和解密给定文本。我想知道为什么我在标题中出现错误plaintextciphertextchecktext不是全局变量,并且在它们是全局变量时工作正常。谢谢!

0 投票
3 回答
2666 浏览

c++ - C++ 堆栈和堆损坏

我最近在阅读有关 C 和 C++ 中的堆栈和堆损坏的内容。该网站的作者使用以下示例演示了堆栈损坏。

我在 Visual Studio 2010 编译器(VC++)上测试了上面的程序,它给了我运行时错误,上面写着:

围绕变量 a 的堆栈已损坏

现在我的问题是:堆栈是终身损坏还是仅在执行上述错误程序期间损坏?

同样,我知道两次删除同一个指针可能会造成非常糟糕的事情,例如堆损坏。以下代码:

当上面的代码片段执行时,VC++ 在运行时显示堆损坏错误。

0 投票
3 回答
154 浏览

c++ - Stack corrupted only for debug configuration C++

I'm trying to get a version of some program through registry. My code works fine when set on release configuration. When I try to run it in debug mode, my code crashes when leaving this function with message "Run-Time Check Failure #2 - Stack around the variable 'version' was corrupted".

I will paste only relevant code of my function. That's all of "version" appearances in my code. When I debug it, version gets proper value. Code doesn't crash in release configuration. For both of configuration I set "Use Multi-Byte Character Set".

Any ideas how to solve it?

0 投票
2 回答
98 浏览

c - While-loops不断重复,程序停止时调试错误

我正在使用 Visual Studio 2010。虽然不断重复,但程序停止时出现错误。

它只是将数组的值增加了 700 倍,并且“行”表明它只是重复了 while 循环而不是它应该的(约 700 倍)

代码:


调试错误:

0 投票
1 回答
1069 浏览

c - 运行时检查失败 #2 - 变量“tempMatrix”周围的堆栈已损坏

我一直在尝试运行一个获取矩阵的函数,并将其顺时针旋转 90 度。出于某种原因,在函数的第一个“for”中,“b”在达到 2 值后加 1,之后工作正常,但是矩阵太大并出现错误。不明白为什么它做额外的++。

0 投票
0 回答
452 浏览

c# - 是否有可能在 C# 中使用 unsafe 关键字导致内存损坏

如果我得到一个指向数组第一个元素的指针,我是否可以超出数组范围并将任意数据写入 GC 堆内存,从而有效地破坏堆和垃圾收集器,或者是否有任何安全防护? CLR 反对这种混乱。

代码示例:

是否有可能以这种方式导致内存损坏,从而可能损坏 CLR 自己的数据结构?

0 投票
2 回答
38 浏览

c++ - 试图计算斐波那契(n)的变量“f”周围的堆栈损坏

我试图让我的程序打印第 n 个斐波那契数。
我得到了一个堆栈损坏断言

0 投票
0 回答
100 浏览

c - 启用调试信息时重新启动嵌入式设备

我正在为一些嵌入式设备使用 SDK。有一些专有的 RTOS 和应用程序代码。我在这个 sdk 中发现了一些错误:在打印一些调试信息(通过宏 DEV_PRINTF)期间设备重新启动。

错误仅在一个地方重现(但并非总是如此):调用 DEV_PRINTF 时(在我的示例中,我已经评论了这一行)。在其他功能中,此宏工作正常。

下面是放置问题代码:

以下是重现错误时的日志:

所以主要问题:我必须在哪里找到问题 - 在 printf_realization 函数中(但我不这么认为,因为这个函数在 sdk 的其他部分工作正常)或者它可能是堆栈损坏(例如写入超出范围在数组中)在代码的某些地方?

谢谢!