raii

    1熱度

    2回答

    使用boost::shared_ptr的程序員需要避免循環,以免產生資源泄漏。一般建議是在可能創建這種循環的情況下使用boost::weak_ptr。然而,這樣做會造成意圖上的差距,因爲人們可能傾向於使用shared_ptr,但僅僅因爲週期問題才這樣做。 但是,在我看來,應該可以創建一種特殊的shared_ptr,它可以通過鏈接循環中所有指針的引用計數來避免循環問題。因爲我可以想辦法做到這一點,我

    1熱度

    2回答

    我來自C++,我經常使用RAII。 據我所知,PHP使用自動內存管理,那麼通過PHP構造函數/析構函數使用RAII仍然適用/良好實踐?

    12熱度

    4回答

    比方說,我有兩個本地智能指針,foo和bar。 shared_ptr<Foo> foo = ... shared_ptr<Bar> bar = ... 這些智能指針是圍繞資源的包裝,由於某種原因必須在訂單foo,然後bar遭到破壞。 現在我想創建一個lambda,它使用foo和bar,但超出了包含它們的範圍。所以我想通過值捕捉它們,就像這樣: auto lambda = [foo, bar]

    3熱度

    4回答

    最近,我在iOS上經歷了幾年的獨家Objective-C之後,我一直在追趕我的C++,並且在'new style'C++中出現的主題是RAII 爲了確保我理解RAII概念正確地說,你會考慮Objective-C懶加載屬性訪問器是一種RAII類型嗎?例如,檢查以下訪問方法 - (NSArray *)items { if(_items==nil) { _items=[[NSArr

    1熱度

    1回答

    這從http://doc.qt.digia.com/qt/qhboxlayout.html#details採取的代碼片段是,除了一些魔術,我不知道的,充滿潛力的內存泄漏。 編輯:感謝尼科斯下指出,異常安全的Qt是奇怪的看這裏:http://doc.qt.digia.com/qt/exceptionsafety.html因此,以保持我的問題的主要意圖有效我更新的示例代碼: QWidget *wind

    0熱度

    1回答

    如果有一個類: class classA { public: int z = 5; }; 我明白RAII是當我寫classA Aobject但我該怎麼辦,如果我要聲明一個全局指針? classA *Aobject; int main() { Aobject = new classA; //not RAII cout << Aobject->z << en

    4熱度

    4回答

    我來自Java背景,但是我學習了C++之後,現在已經使用它編寫了幾年(主要是調試和寫入修復,而不是從頭開始設計程序)。然而,我今天坦率地遇到了一個問題,我花了很長時間才碰到它,我有點驚訝。 比方說,我有一個名爲Class其頭文件包含(除其他代碼)類: class Class1 { private: Class2 object; } 的類2類沒有指定一個默認的構造函數。現

    1熱度

    1回答

    而且從性能角度來看,有沒有更好的方法來做到這一點? 例如,創建一個類/結構稱爲arraydata,它分配用於一些對準的存儲器(儘管由.dataPtr提供一個指針): arraydata X(30,20);

    0熱度

    2回答

    我試圖圍繞外部C API創建僅頭文件C++庫。 C API使用void *指針作爲句柄。 這裏的想法: // resource.hpp class Resource { public: // RAII constructor, destructor, etc. // ... void do_something(const Handle & h) { d

    6熱度

    2回答

    C++類成員的生命期是什麼?例如,在什麼時候Foo對象的std::fstream將被釋放?當進入析構函數或離開析構函數時?這是在C++標準中定義的嗎? struct Foo { std::fstream mystream; ~Foo() { // wait for thread writing to mystream } };