double-free

    -1热度

    3回答

    帮我理解这一点。 这里是上下文。 我用C编写程序++。 我有2个缓冲区(deque)。我们称它们为buffer1和buffer2; 我有2个线程:一个线程被填充缓冲器1与随机值。另一个是将最早的buffer1值复制到buffer2; 我正在使用互斥锁。 我想值复制缓冲器1到缓冲器2的1号位内,为了执行要做到这一点,我写了下面的代码行: 线程1 double a = 20.1; buffe

    2热度

    2回答

    我有两个shared_ptr指向相同的int,即在他们呼叫get()返回相同的地址。但拨打use_count()返回1。当他们最后超出范围,它会尝试释放已被另一种释放的内存,导致双自由运行时错误: #include <memory> #include <iostream> using namespace std; int main() { shared_ptr<int> sp1(

    2热度

    3回答

    我正在练习链接列表结构,我已经使用该算法编写了一个程序。在程序中有一个递归方法来删除链表的每个元素。但是,该方法崩溃。 void exit() { Person* person = phead; exterminateStartingFrom(person); } void exterminateStartingFrom(Person* person) {

    0热度

    1回答

    我实现了一个Stack类,并试图利用该类来解决河内问题。这里是我的代码: template<class Datatype> class Node { public: Node() { next = NULL; prev = NULL; } Node* getNext() { retu

    3热度

    2回答

    我在我的内核代码中怀疑双kfree。基本上,我有一个数据结构,在模块中是kzalloced和kfreed。我注意到,相同的地址被分配,然后再次分配而不在模块中释放。 我想知道我应该使用什么技术来找出发生错误的kfree的位置。

    3热度

    2回答

    一般来说,什么可能会导致程序中出现双重空闲的动态内存分配? 更确切地说,我的代码都没有使用动态分配。我正在使用STL,但它更可能是我做错了,而不是它是G ++/glibc/STL的破坏。 我搜查了一遍试图找到这个答案,但我无法找到任何这种错误生成没有任何动态内存分配的任何示例。 我很想分享产生这个错误的代码,但我不允许发布它,我不知道如何将问题减少到足够小以便在此处给出。我会尽我所能来描述我的代码

    -1热度

    2回答

    删除指针后我有一个包含其在它的构造动态分配如下成员指针的类: class Record { public: Record(unsigned short numBytes, char* bufRecord); ~Record(); unsigned short size() {return m_numBytes;} private: unsigned s

    4热度

    2回答

    当我在valgrind中编译并运行下面的代码时,它看起来像线程在我加入线程时被释放,然后在它未获得未引用的内存时被释放已经free'd读取。 这是valgrind的“假阳性”吗?如果不是,在较大的并行程序中忽略一般是安全的吗?我如何解决它? int main (string[] args) { Thread<int> thread = new Thread<int>.try ("Thre

    1热度

    1回答

    我有一个底座和一个派生类: 在阿: //Includes class A { protected: static std::string a; //other dummy code }; 在A.cpp std::string A::a = "bar"; //other dummy code 在了Bh: #include "A.h" //Other

    -2热度

    2回答

    我得到的错误与标题相同。我认为这是因为矩阵A而发生的,但无法理解为什么以及如何解决它。 请帮助我。这是完整的代码。我正在使用g ++来编译代码。 #include <stdio.h> #include <fstream> #include <math.h> #include <string.h> using namespace std; void count() { FILE