首先,我的動機是做高效的內存管理像計算內核是C的頂部。我試圖用std::unique_ptr
和std::vector
,我的代碼看起來像下面使用的unique_ptr和適當的容器做內存管理
// my data container
typedef std::unique_ptr<double> my_type;
std::vector<my_type> my_storage;
// when I need some memory for computation kernel
my_storage.push_back(my_type());
my_storage.back.reset(new double[some_length]);
// get pointer to do computational stuff
double *p_data=my_storage.back.get();
注意這裏在實踐中p_data
可以存儲在其他一些容器(例如地圖)以索引每個分配的陣列根據域名問題儘管如此,我的主要問題是
這裏是
std::vector
一個好的選擇嗎?什麼樣std::list
/set
其他容器?是否與我的分配方法的根本問題?
假設我用
p_data
對於某些操作後,現在我想以釋放原始指針p_data
指向的內存塊,什麼是最好的做法嗎?
如果你'p_data'預計將在不同的容器之間共享,你可以使用'的std :: shared_ptr'代替,然後就完全不使用原始指針。 – Mine
'的std ::的unique_ptr',如果你使用'新雙[]'和'喜歡的std :: make_unique'避免這種不匹配。 –
Jarod42
@Mine:根據目前尚不清楚的OP規範,這可能完全是浪費資源。 – Jack