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

c++ - 来自函数副本的 C++ 双重释放错误

我正在阅读 Stroustrup C++ 11 书,遇到了双重免费异常。我知道它会释放内存两次,但我不明白为什么它会发生在通过副本传递的函数中:

print_product() 正在使用 Vector 类并创建一个具有重复内容的新 Vector?为什么这会导致双重免费?我假设在这种情况下 RIIA 以某种方式与 Vector::~Vector() 交互,类似于竞态条件?

我知道如果我改变它以通过引用传递它的参数,它将避免双重释放。我试图更好地理解通过副本传递的问题。

谢谢!

0 投票
2 回答
3578 浏览

c++ - Double Free or Corruption (out): 0x000000000154fc20 in C++

我正在尝试在 C++ 中对向量进行插入排序,但我的 ./a.out 返回:* `./insertion' 中的错误:双重释放或损坏(输出):0x000000000154fc20 *

不知道为什么会发生这种情况,我见过类似的其他问题,而且总是与代码有关,购买我的代码我不知道问题是什么。

这是代码:

0 投票
3 回答
149 浏览

c++ - C++ glibc 双释放错误

我遇到了这个我无法弄清楚的奇怪错误。我正在为考试而学习,所以我使用的是结构而不是类,因为这就是我们在课堂上所做的。这是我的代码

这是错误

我不知道 glibc 是什么意思,但我看不出我在哪里进行双重释放。当我注释掉 Student 析构函数时,代码可以正常工作。这是为什么?我为每门课程分配了内存,所以我在析构函数中释放了内存,所以我认为没有它程序就无法工作,但确实如此。编辑:还有一件事。当我注释掉学生二 = 一时,这没有什么区别;行,所以我猜测错误在 addCourse() 和/或析构函数中

抱歉,这是一个很长的问题,非常感谢

0 投票
1 回答
2322 浏览

ios - Swift malloc_error_break 因双重释放而崩溃

我正在开发一个从 Web API 获取数据的应用程序。大多数时候,它运行良好。但是,有时我会收到错误:

*** 在 malloc_error_break 中设置断点进行调试

我设置了一个 malloc_error_break 断点,当应用程序崩溃时,它会显示出来,第一行突出显示:

我不知道这意味着什么。我已经搜索了几个小时的堆栈交换,但我无法获得任何帮助。一次,错误显示为:

请不要评判我,但我不知道指针是什么,释放某些东西或分配对象意味着什么。如果有人想给我一个快速的速成课程和/或启发我了解我的错误可能是什么,那就太好了。

编辑:我相信错误可能来自 UIImageView 扩展下载图像:

}

(auth.client.get 是 OAuthSwift 框架中的一个方法)

崩溃后我打印了回溯:

我再一次不知道这意味着什么,但它可以帮助调试。

0 投票
1 回答
1498 浏览

c++ - 当我在 C++ 中擦除我的向量时,我遇到了双重免费错误

如以下代码。

我想将向量中的元素移到后面。

例如:[(1),2,3,4] -> [2,3,4,(1)]

但是,它会导致双重免费问题。这段代码的逻辑很简单。

我想我滥用了擦除功能。这是真的吗?有没有人告诉我细节?

感谢您的阅读。

这是输出:

*** Error in '/home/ubuntu/workspace/hello-cpp-world.cc.o': double free or corruption (out): 0x00000000016ffca0 ***

这是代码片段:

0 投票
0 回答
34 浏览

c++ - 为什么我的代码中出现双重释放或损坏错误?

我一直在编写一组整数 ADT 的链表实现,并且在编译和运行代码时遇到了双重释放或损坏错误,而对于我的生活,我无法弄清楚源代码。我最初认为它在析构函数中,但在我对其进行了相当多的修改后,这似乎不是问题。我附上我的代码以供审查。

我省略了我编写的集合操作函数,因为我没有在这些函数中进行任何删除。此外,我用来尝试跟踪运行和编译期间的错误的 cout 语句,例如“删除临时删除”。

谢谢,大卫

0 投票
2 回答
1858 浏览

c - ***错误:双重免费或损坏(出):0x00007ffffe3465010 ***.警告:损坏的共享库列表:0x7ffea4000920!= 0x7ffff7ffd9d8

假设 RTallocate 和 RTwrite_barrier 是 2 个自定义函数,它们工作得很好。RTallocate - 在堆上分配内存 RTwrite_barrier 相当于一个assignemnt 语句。

该程序只是将节点插入到链表中。然后尝试删除头部。

我收到此错误:
`/home/test/RT-Test/InMul' 中的错误:双重释放或损坏(输出):0x00007fffe3465010
警告:损坏的共享库列表:0x7ffea4000920 != 0x7ffff7ffd9d8
======= 回溯:= ========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7ffff77f97e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x7fe0a)[0x7ffff7801e0a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7ffff780598c]
/home/test/RT-Test/InMul[0x400b98]
/lib/x86_64-linux-gnu/librtgc.so(rtalloc_start_thread+ 0x1ef)[0x7ffff7b4fa2c] /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba)[0x7ffff756c6ba] /lib/x86_64-linux-gnu/libc.so.6(克隆+0x6d)[0x7ffff788882d]


我只释放一次头部。为什么我会面临这个问题?
0x00007fffe3465010 是头部的地址。

0 投票
1 回答
496 浏览

c++ - 使用 Flatbuffer Union 导致双重释放或损坏错误

我在程序执行结束时收到以下错误:

* `./bin/test' 中的错误:双重释放或损坏(输出):0x00007ffd34dab0d0 * 中止

我目前正在测试来自 Flatbuffer for C++ 的基于对象的 API (--gen-object-api)。我的主文件如下所示:

我知道错误发生在哪里,但我不知道如何避免它。valgrind 输出如下所示:

我的 flatbuffer 文件(event.fbs)如下所示:

我的输出是正确的,除了错误:

更新:

如果没有对象 API,它会像这样吗?:

然后我会通过建设者?

0 投票
2 回答
109 浏览

c - 读取文件并转换其字符的 C 程序会产生双重释放或损坏错误

执行我的程序时,出现此错误:

问题似乎出在 xor 函数中,但我不知道问题出在哪里。据此我的问题似乎是由取消引用的指针引起的。但根据 valgrind 的说法,这是一个 open no cancel 错误(我不知道它是什么并且在谷歌上找不到任何相关的东西)。另一方面,我没有编译错误。

我的代码有什么问题?

这是程序:

0 投票
3 回答
544 浏览

c++ - 共享指针:为什么没有双重免费?

当共享指针超出范围时,为什么这段代码不会生成双重释放?