问题标签 [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.
c++ - 我在使用 G+Smo 库时出现双倍免费错误的原因是什么?
我正在使用 G+Smo 库进行一些插值,并在使用库函数时在运行时继续运行“双重释放或损坏”错误。最终,我的目标是包装它,以便从用户友好的 Python 中调用它。
我编写的最小工作示例如下:
此代码编译,即使最后 2 行之一未注释,但在运行时给出错误。该函数anchors_into
在 gsTensorBasis.h 中定义为:
我已经尝试res
全局定义变量(它在我的代码中的另一个地方解决了问题,而不是在这里),或者使用该函数anchor_into(10, res)
来查找第 10 个基本函数的锚点,但是当我执行时,所有选项都以:
如果我滥用图书馆或图书馆本身有问题,我不知道在哪里寻找问题。我在这个网站上遇到了很多关于类似错误的问题,但大多数都与个人类/结构定义有关,我不这样做。
c++ - 释放指针时出现分段错误
为偶数 3x3 矩阵调用 det 函数时会发生分段错误。我没有使用复杂调试器的经验,但使用 printf 语句看起来运行时错误发生在析构函数中的循环迭代期间。我也尝试过使用向量<向量<双>>而不是双**。我认为在这种情况下它不需要析构函数。然后它给了我一个“双重免费错误”。我了解它何时发生,但在我的代码中找不到错误。我也尝试过计算内联辅因子而不是调用函数,但它没有帮助。
memory - rust 可以保证我使用正确的对象池释放对象吗?
假设我已经定义了自己的对象池结构。在内部,它保留Vec
所有对象和一些数据结构,让它知道向量中的哪些项目当前已分发,哪些是免费的。它有一个 allocate 方法,该方法返回向量中未使用项的索引,以及一个 free 方法来告诉池在向量中的索引处可以再次使用。
我是否可以定义对象池的 API,以使类型系统和借用检查器保证我将对象释放回正确的池中?这是假设我可能有多个相同类型的池实例的情况。在我看来,对于常规的全局分配器,rust 不必担心这个问题,因为只有一个全局分配器。
用法示例:
c++ - 如果一个函数返回一个 std::unique_ptr,假设每个返回值是一个新对象是否合理?
我正在学习std::unique_ptr
,试图了解它代表什么。
给定一个返回 a 的函数(不受我控制)unique_ptr
,是否暗示/很好理解每次调用都返回unique_ptr
指向新对象的 a (不同于任何先前的调用)?
unique_ptr
举例来说,下面的代码在退出时产生一个双释放,我希望我能正确理解为什么:因此unique_ptr
封装相同内存/对象的两个 s 会导致第二个被破坏时双重释放。因此,以下函数的实现是否会getUniquePtr()
被普遍/隐含地理解为不合理?
c - 为什么我得到 free():在 tcache 2 中检测到双重释放并中止(核心转储)*
我正在编写代码来获取每一代的血型。它有一个函数,可以释放这个人和他的祖先,但我得到了这两个错误: free(): double free detected in tcache 2; 中止(核心转储)。以下是释放家庭的代码。任何建议将不胜感激!
c - 为什么会出现双重释放?
我一直在尝试编写一个拼写检查程序,该程序使用字典和文本文件尽快找到拼写错误的单词。但是,我收到一条错误消息,指出在运行程序时发生了双重释放。我想知道为什么会这样。
错误信息:
拼写器(由 CS50 提供):
字典操作和检查(由我):
dictionary.h
:
c - C 保持双倍释放,尽管尝试以与分配相同的形式释放
嘿,我正在尝试为学校做一个简单的机器学习应用程序,但由于某种我什至无法理解的原因,我不断获得双倍免费。
我意识到这可能是非常明显的事情,但是我一生都无法弄清楚,并希望得到帮助。
可能不需要的额外细节:评估只是将输入传递给网络(存储在 ins 中)并返回输出输入和输出都存储在浮点“矩阵”中
编辑:添加评估
c - 为什么我得到双倍免费?
这是我的代码。我尝试 malloc 被 malloc 的元素,但我不知道如何释放它们。
openssl - 使用 openssl 1.0.2k 在我的代码中报告了双倍免费
我在我的应用程序中使用 openssl library 1.0.2k。在某些随机情况下,会发生双重免费错误情况。基本的代码流程是:
根据我最近的了解,在 SSL_free 之后不需要进行 bio free 操作。所以我做了更改并重新执行了代码。但是仍然会产生相同的错误。请提出任何可能的根本原因。
c++ - C++ 为什么我的程序出现错误 free(): double free 在 GDB 的 tcache 2 中检测到
所以我不得不为 Udemy 的一门课程做这个练习,我完成了它。但是在 GDB 中我自己的机器上运行时,我在标题中得到了上面的错误。我尝试检查破坏前后点的指针的值,并且 start 的值在 line 和 copy 的析构函数上表现得很奇怪(都在 main 的范围内)在第一次调用我无法访问的析构函数时start 和销毁后 start->x 的值(它通常打印)为零(预期),但在第二个析构函数处,应该为 3 的 start->x 的值也为零。但是我的代码中没有任何内容告诉我(它可能会告诉其他人)它应该这样做。我就是想不通