unique-ptr

    2熱度

    1回答

    我已經明白,調用成員函數的內容是從一個移動的std::unique_ptr是未定義的行爲。我的問題是:如果我在unique_ptr上調用.get()然後然後移動它,原來的.get()指針會繼續指向原始唯一指針的內容嗎? 換句話說, std::unique_ptr<A> a = ... A* a_ptr = a.get(); std::unique_ptr<A> a2 = std::move(a

    11熱度

    2回答

    現在首先我知道unique_ptr <>和前向聲明中的一般問題,如Forward declaration with unique_ptr?。 考慮這三個文件: A.H #include <memory> #include <vector> class B; class A { public: ~A(); private: std::unique_ptr<B>

    8熱度

    2回答

    我正在嘗試使用std::unique_ptr<T[]>自定義內存分配器。基本上,我有一個是IAllocator,它提供了以下方法子類自定義的分配: void* Alloc(size_t size) template<typename T> T* AllocArray(size_t count) void Free(void* mem) template<typename T> void Fr

    4熱度

    4回答

    這是一個準確的描述嗎?是否有意義? 確保它指向的對象在unique_ptr超出範圍之前不會被刪除[即使您沒有使用unique_ptr]?

    10熱度

    1回答

    我經常需要將動態數組的起始位置與16,32或64 Byte邊界對齊,例如SSE,AVX,AVX-512。我正在尋找一種透明和安全的方式,將其與智能指針結合使用,特別是std::unique_ptr。 鑑於分配和重新分配程序的實現,說 template<class T> T * allocate_aligned(int alignment, int length) { // omitt

    0熱度

    3回答

    根據該螺紋Returning a pointer to a vector element,建議使用插入時到載體中的對象,並返回它的指針以下代碼: // in your class std::vector<std::unique_ptr<SceneGraphNode>> m_children; SceneGraphNode* addChild(std::string name) {

    0熱度

    2回答

    unique_ptr<list<Struct>>和list<unique_ptr<Struct>>之間有什麼區別? list<unique_ptr<Struct>>是否會導致元素的內存自動管理?

    1熱度

    2回答

    據我所知,auto_ptr不能與矢量一起使用,因爲auto_ptr不符合作爲可複製構造的要求。由於被複制的auto_ptr被修改,因此複製不會導致兩個完全相同的副本,從而違反了可複製構造方式。 Unique_ptr也似乎也這樣做;它修改被複制的對象 - 被複制對象的指針成員被設置爲nullptr。 那麼,怎麼可能使用uinque_ptr與矢量而不是auto_ptrs? 我的理解是否正確或我在這裏錯

    2熱度

    2回答

    我讀的書[C++標準庫第二版],發現以下部分的類型: namespace std { template <typename T, typename D> class unique_ptr<T[], D> { public: typedef ... pointer; // may be D::pointer typedef T element_type; typedef D delet

    3熱度

    1回答

    我試圖理解爲什麼unique_ptr有nullptr_t構造 constexpr unique_ptr::unique_ptr(nullptr_t); 我曾以爲這是因爲正常的一個參數的構造函數是明確的,因此會拒絕nullptr值: explicit unique_ptr::unique_ptr(pointer p); 但是,當我建立一個例子是細編譯器: namespace ThorsAnv