问题标签 [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 投票
1 回答
164 浏览

c - 双向链表 C - 变量“列表”周围的堆栈已损坏

我正在编写一个将双向链表拆分list为两个列表listA并将listB它们打印出来的代码。代码似乎完成了工作,但最终程序崩溃了。调试器抛出 Run-Time Check Failure #2 - Stack around the variable 'listA' was corrupted.Run-Time Check Failure #2 - Stack around the variable 'list' was corrupted.我读过这可能是由于为我的结构分配的内存不足,但我应该分配多少?

整个代码:

收到的输出:

欢迎任何帮助。

0 投票
1 回答
100 浏览

c++ - 函数声明的数组大小会导致堆栈损坏,但是干净的编译?

这是我设法从可以干净编译但或多或少随机方式崩溃的原始源代码中提取的代码示例:

在使用 GDB 和 Address Sanitizer 工具进行一些调试会话后,我们发现:

是堆栈损坏的罪魁祸首。

知道 p 在运行时实例化并且数组大小声明是在编译时以固定值完成的,如何编译而不抱怨?编译时 p->f() 的值是多少?

此外,为什么 memset(写入额外 10 个字节的“未确定”数组大小)运行时没有分段错误?

0 投票
1 回答
269 浏览

c++ - 在 C++ 中使用 sscanf 解析消息

我正在尝试将以下“incoming_message”解析为不同的变量,并且代码可以完美运行,直到函数结束。然后我收到以下错误: “运行时检查失败 #2 - 变量 'network_number' 周围的堆栈已损坏。”

这是我收到错误的代码:

}

有人知道我为什么会收到此错误吗?还有其他更简单的方法吗?

提前致谢!

0 投票
1 回答
388 浏览

c - 调用 OpenSSL DES_cbc_encrypt() 时堆栈损坏

这是加密struct使用的代码DES,然后在写入后将其读回File

不知何故,我在调试器中遇到了加密和解密函数的堆栈损坏错误。我追查了周围的问题DES_cbc_encrypt()。我究竟做错了什么?我正在为 OpenSSL 使用已编译的二进制文件:openssl-1.1.0e-vs201264-bit.

0 投票
1 回答
367 浏览

c - 返回语句 C 上的 SegFault

我在使用此代码时遇到的问题是,当我尝试在第一次迭代时在 addTrash 函数中返回 struct node * head 时。我怀疑这可能是堆栈损坏,但我不确定,我不知道我将如何弄清楚我给你的代码中的错误是什么。

这是一个双向链表,它拥有的唯一数据是值。

0 投票
2 回答
315 浏览

gdb - 使用 GDB 在堆栈上打印符号

我试图调试一个堆栈损坏并且看起来太大(它有多个线程)而无法手动调试的程序。所以我想知道是否有一种方法可以在损坏后打印出与堆栈上的地址相对应的符号,以尝试更好地了解它是如何到达那里的。

我注意到“信息符号”命令(通常在给定地址打印出符号)一次只接受一个地址。因此,我尝试编写一个脚本来执行我想要的操作,但是当我尝试将地址存储在便利变量中以便我可以手动遍历堆栈时,info symbol 命令将不起作用。

我知道在 WinDBG 上有dds执行我正在寻找的命令,但我无法在 GDB 中找到等效的命令。有人知道等价物吗?

0 投票
1 回答
635 浏览

c++ - 寻找堆栈损坏错误的解释

以下问题是从一个巨大的项目中提炼出来的,也是我能够提出的问题的最小示例。

我知道,派生std::string是不好的,它已经在我们的代码库中发生了变化,但我试图了解这里发生了什么。

代码在 Visual C++ 2017 上崩溃

仅在发布模式下(具有速度优化)。如果没有速度优化,它不会在发布模式下崩溃。

msgsVisual Studio 中的错误是这样的(看看colors底部的损坏大小):

在此处输入图像描述

我的猜测是std::vector<std::string>::push_back(std::string&&)with a的调用my_string是有问题的(类似切片的行为)。但这怎么会破坏堆栈(或堆栈指针)?

有人知道这里会发生什么或我如何找出答案吗?

是我的项目,以防有人有兴趣重现该问题。

0 投票
1 回答
1014 浏览

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

我有一个应该从文件中读取、创建数据结构并返回的函数。该功能有效,就在返回线之前,一切看起来都很好,并且结构看起来还不错。但随后,该功能失败 -

“运行时检查失败 #2 - 变量‘输出’周围的堆栈已损坏。”

该文件包含有关发电站和城市的信息。(输出、位置、名称等)有些行是城市,有些是发电站,与行中的最后一个整数不同(或缺少)。如果它存在(我们称他为 X),这条线是一个发电站,接下来的 X 线是与之相连的城市。

这个功能。应该创建指向车站指针(车站**)的指针,所有城市都连接到每个车站。

车站和城市结构-

测试文件 -这里

0 投票
1 回答
239 浏览

gdb - GDB 为我的核心文件显示更多数量的回溯 (90)

GDB 7.7 为我的核心文件显示更多数量的回溯 (90)。这是 GDB 或核心文件或堆栈损坏问题的问题吗?

0 投票
0 回答
54 浏览

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

我刚刚创建了一个名为“matrix4”的类,它有一个指向浮点数的指针,称为数据。

构造函数接收 16 个浮点数,分配空间并用各自的浮点数初始化每个单元格:

现在我正在做一个生产matrix4的工厂类。这个特定的,接收一个比例向量(我也创建了 vector3D 类)并返回一个比例矩阵:

问题是它给了我这个错误:“运行时检查失败#2 - 变量'm'周围的堆栈已损坏”,我不明白为什么......