delete-operator

    0熱度

    1回答

    我正在進行這個單元測試。我想刪除鑽頭和電池,但似乎不起作用(也許電池不能被刪除)。我可以在析構函數上做任何事情來處理這個問題嗎? void test_rover::testDisconnectBattery() { Drill* drill = new Drill(); drill->connectBattery(new Battery(10)); drill-

    1熱度

    4回答

    我嘗試在Linux64上運行/編譯OpenTibia服務器。小小的調整,編譯和一切似乎很好。然而,Valgrind的說: ==32360== Invalid free()/delete/delete[]/realloc() ==32360== at 0x4C2BDEC: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)

    0熱度

    2回答

    我真的很難理解指針,所以請原諒我這個問題可能有任何含糊之處。是的,我提出了不止一個問題,但標題中的問題是迄今爲止最重要的問題。其他問題只是我非常感謝你回答的問題。因此,可以說我有一個類,它看起來是這樣的: class myclass { public: myclass(); ~myclass(); private: struct node {

    0熱度

    1回答

    我想在對象局部性較低時測試C++性能,因此我試圖分配大量的具有許多「死對象」的內存。當他們之間有很多「死亡的人」時,我會以「活的物體」爲基準。 爲此我定義了一個簡單的LinkedList: #include "LinkedList.hpp" #include <iostream> #include <string> LinkedList::LinkedList() { this-

    0熱度

    1回答

    我有一個相當大的挑戰(也許只是爲了我)。 我有幾個繼承自某些基類A的類。 所有這些類都應該重載new和delete運算符。 現在,我在類A中重載了new/delete以返回錯誤消息,但我希望能夠在編譯時識別這些情況,而不是在運行時識別這些情況,因爲有很多繼承類,並且很難跟蹤他們。 任何想法如何強制從類A繼承的類重載新/刪除操作符?或任何其他解決方案? 謝謝。

    2熱度

    2回答

    我正在學習C/C++,我正在做的練習是創建一個評估算術表達式的程序。 要完成練習,我需要一個通用函數,它能夠標記一個字符串。 由於編譯時不知道要解析的字符串的大小,因此我必須動態地分配堆中的一些數據。 工作完成後,可以釋放堆中的內存。 我的問題很簡單:我正確釋放內存?查看評論中的問題。 記號化功能 char** Tokenize(const char delimiter, const char*

    -1熱度

    2回答

    當我嘗試初始化構造函數時,發現了一些奇怪的錯誤。如果我只是展示他們,這是最簡單的。 #include <iostream> class MyClass { public: int var1, var2, var3; MyClass() { var1, var2, var3 = 0; } MyClass(int one, int

    4熱度

    1回答

    的幾個問題已經被問過的計算器這個問題,但我還沒有看到任何解釋理由 delete表達式的限制落後。 爲了澄清這個問題,我試圖收集事實,因爲我已經在接下來的三個評論中理解了這些事實。 備註1:一般新的表達 讓我們考慮任何「運營商新的」(不管它是默認的全球性的,它覆蓋默認的全局之一,重載版本或類成員一個版本版)。我們假設我們也有一個匹配的「操作員刪除」。 假設原型如下: void* operator n

    0熱度

    1回答

    我正在做我的功課。目標是實現大操作類(BigInt)。 初始化:BigInt類的每個對象都被構造爲一個動態數組。數組的成員是由用戶輸入的字符串的數字(以相反順序 - 這對我來說更容易實現操作)。 類BigInt的規格: 兩個BigInts之間的關係(更小,更大,相等), 操作:加,減,乘。 關係,加法和減法運作良好。問題在於乘法。 問題:當我測試沒有乘法的程序時,它運行良好。當我取消註釋乘法時,在

    -1熱度

    2回答

    我在一次採訪中被問到: 「在C++的內存管理方面,說明這段代碼有什麼問題?」 int main(){ for(int i = 0; i<10; i++){ Foo foo = new Foo(); delete foo; } } class Foo{ foo(){ string x = new string;