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