问题标签 [double-free]

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 投票
0 回答
25 浏览

c++ - 我在使用 G+Smo 库时出现双倍免费错误的原因是什么?

我正在使用 G+Smo 库进行一些插值,并在使用库函数时在运行时继续运行“双重释放或损坏”错误。最终,我的目标是包装它,以便从用户友好的 Python 中调用它。

我编写的最小工作示例如下:

此代码编译,即使最后 2 行之一未注释,但在运行时给出错误。该函数anchors_into在 gsTensorBasis.h 中定义为:

我已经尝试res全局定义变量(它在我的代码中的另一个地方解决了问题,而不是在这里),或者使用该函数anchor_into(10, res)来查找第 10 个基本函数的锚点,但是当我执行时,所有选项都以:

如果我滥用图书馆或图书馆本身有问题,我不知道在哪里寻找问题。我在这个网站上遇到了很多关于类似错误的问题,但大多数都与个人类/结构定义有关,我不这样做。

0 投票
2 回答
90 浏览

c++ - 释放指针时出现分段错误

为偶数 3x3 矩阵调用 det 函数时会发生分段错误。我没有使用复杂调试器的经验,但使用 printf 语句看起来运行时错误发生在析构函数中的循环迭代期间。我也尝试过使用向量<向量<双>>而不是双**。我认为在这种情况下它不需要析构函数。然后它给了我一个“双重免费错误”。我了解它何时发生,但在我的代码中找不到错误。我也尝试过计算内联辅因子而不是调用函数,但它没有帮助。

0 投票
3 回答
361 浏览

memory - rust 可以保证我使用正确的对象池释放对象吗?

假设我已经定义了自己的对象池结构。在内部,它保留Vec所有对象和一些数据结构,让它知道向量中的哪些项目当前已分发,哪些是免费的。它有一个 allocate 方法,该方法返回向量中未使用项的索引,以及一个 free 方法来告诉池在向量中的索引处可以再次使用。

我是否可以定义对象池的 API,以使类型系统和借用检查器保证我将对象释放回正确的池中?这是假设我可能有多个相同类型的池实例的情况。在我看来,对于常规的全局分配器,rust 不必担心这个问题,因为只有一个全局分配器。

用法示例:

0 投票
2 回答
88 浏览

c++ - 如果一个函数返回一个 std::unique_ptr,假设每个返回值是一个新对象是否合理?

我正在学习std::unique_ptr,试图了解它代表什么。

给定一个返回 a 的函数(不受我控制)unique_ptr,是否暗示/很好理解每次调用都返回unique_ptr指向新对象的 a (不同于任何先前的调用)?

unique_ptr举例来说,下面的代码在退出时产生一个双释放,我希望我能正确理解为什么:因此unique_ptr封装相同内存/对象的两个 s 会导致第二个被破坏时双重释放。因此,以下函数的实现是否会getUniquePtr()被普遍/隐含地理解为不合理?

0 投票
1 回答
4702 浏览

c - 为什么我得到 free():在 tcache 2 中检测到双重释放并中止(核心转储)*

我正在编写代码来获取每一代的血型。它有一个函数,可以释放这个人和他的祖先,但我得到了这两个错误: free(): double free detected in tcache 2; 中止(核心转储)。以下是释放家庭的代码。任何建议将不胜感激!

0 投票
1 回答
69 浏览

c - 为什么会出现双重释放?

我一直在尝试编写一个拼写检查程序,该程序使用字典和文本文件尽快找到拼写错误的单词。但是,我收到一条错误消息,指出在运行程序时发生了双重释放。我想知道为什么会这样。

错误信息:

拼写器(由 CS50 提供):

字典操作和检查(由我):

dictionary.h

0 投票
1 回答
54 浏览

c - C 保持双倍释放,尽管尝试以与分配相同的形式释放

嘿,我正在尝试为学校做一个简单的机器学习应用程序,但由于某种我什至无法理解的原因,我不断获得双倍免费。

我意识到这可能是非常明显的事情,但是我一生都无法弄清楚,并希望得到帮助。

可能不需要的额外细节:评估只是将输入传递给网络(存储在 ins 中)并返回输出输入和输出都存储在浮点“矩阵”中

编辑:添加评估

0 投票
1 回答
43 浏览

c - 为什么我得到双倍免费?

这是我的代码。我尝试 malloc 被 malloc 的元素,但我不知道如何释放它们。

0 投票
1 回答
31 浏览

openssl - 使用 openssl 1.0.2k 在我的代码中报告了双倍免费

我在我的应用程序中使用 openssl library 1.0.2k。在某些随机情况下,会发生双重免费错误情况。基本的代码流程是:

根据我最近的了解,在 SSL_free 之后不需要进行 bio free 操作。所以我做了更改并重新执行了代码。但是仍然会产生相同的错误。请提出任何可能的根本原因。

0 投票
1 回答
213 浏览

c++ - C++ 为什么我的程序出现错误 free(): double free 在 GDB 的 tcache 2 中检测到

所以我不得不为 Udemy 的一门课程做这个练习,我完成了它。但是在 GDB 中我自己的机器上运行时,我在标题中得到了上面的错误。我尝试检查破坏前后点的指针的值,并且 start 的值在 line 和 copy 的析构函数上表现得很奇怪(都在 main 的范围内)在第一次调用我无法访问的析构函数时start 和销毁后 start->x 的值(它通常打印)为零(预期),但在第二个析构函数处,应该为 3 的 start->x 的值也为零。但是我的代码中没有任何内容告诉我(它可能会告诉其他人)它应该这样做。我就是想不通