Hy,我想問一個困惑我的問題。C++ - 使用std :: vector&related內存管理的正確方法
我有一類這樣的:
class A {
private:
std::vector<Object*>* my_array_;
...
public
std::vector<Object*>& my_array(); // getter
void my_array(const std::vector<Object*>& other_array); // setter
};
我想問問你,根據你的經驗,什麼是執行的(可能的)安全的方式setter和getter的正確途徑。
我想到的第一個解決方案如下。 A)檢查輸入是否是指我已經保存的數據結構; B)釋放my_array_指向的所有對象的內存C)複製other_array指向的每個對象,並將其副本添加到my_array_ D)最後結束該函數。
爲了以防萬一,getter可能會生成內部數組的副本。
問題很多: - 這個策略是否過度使用? - 它真的可以避免問題嗎? - 有人真的使用它或有更好的方法嗎?
我試着尋找這個問題的答案,但沒有發現任何特別關注這個問題。
在需要使用智能指針是一個很好的答案,謝謝你們..好像我不能給「有用的答案」不止一個,所以我提前道歉。 :-)
從你的答案中可以得出一個新的疑問。 當我使用包含unique_ptr對象的向量時,我將不得不定義一個深層拷貝構造函數。鑑於現在我們正在使用智能指針,是否有比使用迭代器複製對象矢量中的每個元素更好的方法?
爲什麼在對象中有指向'std :: vector'的指針? –
*咳嗽* ..不好的設計? –
請定義「SAFE」。 –