delete-operator

    10熱度

    1回答

    我正在爲嵌入式設備編寫一個C++程序,並且我想編譯它而沒有libstdC++,異常和動態內存分配。 示例程序: #include <stdio.h> class A { public: virtual ~A() {} virtual void Foo() = 0; }; class B : public A { public: virtual ~B(

    0熱度

    2回答

    下面的代碼應該實現我自己的字符串類。類似於如果你想創建這樣的String s = "Hi";。我在銷燬時遇到錯誤,並獲取到delete[] data的部分。是說當我離開堆緩衝區時,我在寫信。這些不是cstrings,所以在我的字符串末尾沒有空字符。 這裏是我的轉換/默認構造函數: String346::String346(const char * oldString) : data(NULL),

    4熱度

    6回答

    所以我正在閱讀一些關於刪除指針參數特別是這些的堆棧溢出答案(1,2),因爲我正在構建一個函數,需要一個指針作爲參數。 功能的簡化版本低於: void draw(Shape * b) { //Draws code.... } 沒有我感到困惑在這裏有什麼缺失。例如,如果函數是這樣調用的: Shape * c; draw(&c); 然後我不必刪除任何東西。但是,如果是這樣的: d

    0熱度

    3回答

    我是一名學生,是C++的初學者,在課上我們正在練習指針,動態數組和函數。我寫了一個沒有錯誤的程序,並做了它必須做的事情。我的問題是它沒有刪除動態數組。 我們被要求把刪除[]功能 #include <iostream> using namespace std; char* Function (char c[], int numbers[]){ int k=0; for (

    0熱度

    1回答

    我最近一直在使用std :: mutex,現在正在尋找一個刪除std :: mutex成員的對象的模式/設計指南。當一個對象作爲使用互斥體的公共函數(監視器函數,關鍵部分等)並且當這個對象被刪除時,它可能有線程仍然在等待互斥體。 std :: mutex在被其他線程鎖定時有未定義的行爲被刪除,所以問題就出現了。 我想知道什麼是在這種情況下通常可以接受的模式。或者,如果這被認爲是一種糟糕的編碼風格,

    12熱度

    1回答

    有人可以解釋這個C++編譯錯誤的性質嗎?我正在研究/學習如何重載全球運營商的新增,刪除及其變體。我讀了一個coupleofarticlesonthesubject,但我找不到一個似乎專門解決這個問題。 守則 foo.h: #ifndef foo_h #define foo_h void* operator new(size_t); void* operator new[](size_t);

    1熱度

    1回答

    我已閱讀本link有關新增和刪除C++。有一個代碼實現了Singleton模式。我已經測試此代碼: #include <iostream> #include <memory> class Singleton { static Singleton *instance; static std::size_t refcount; std::string _s;

    1熱度

    4回答

    我一直無法理解C++中的刪除和刪除[]函數。這是我目前所知: aClass *ptr = new aClass(); //Allocates memory on the heap for a aClass object //Adds a pointer to that object ... delete ptr; //ptr is still a pointer

    0熱度

    2回答

    認識指針分配當我嘗試調用指針上刪除對一個struct Vertex(與Vertex * v = new Vertex分配,然後成功地使用並存儲在std::list在我的類的析構,我得到這個運行時錯誤: graphtake3(12325,0x100082000) malloc: *** error for object 0x100200340: pointer being freed was not

    1熱度

    2回答

    在以下示例中,b是一個多態指針類型,其靜態類型是Base*並且其動態類型是Derived*。 struct Base { virtual void f(); }; struct Derived : Base { }; int main() { Base *b = new Derived(); // ... delete b; } b