[英]Shared pointers to vectors
請原諒這個簡單的問題,但是我在理解指向集合的指針時遇到了麻煩。
想象一下,我有這個字節向量:
vector<uint8_t> n;
我想將其存儲在共享指針中。 為什么需要(&)運算符的地址?
shared_ptr<vector<uint8_t>> m(&n);
我認為構造函數將采用n
。 但是我也認為我對這里發生的事情有深刻的誤解:)
我想將其存儲在共享指針中。
不,你不會。 共享指針用於管理需要刪除的動態對象。 此向量不是使用new
創建的,因此不能由(常規)共享指針進行管理。 指針將嘗試刪除它,從而導致混亂。
您想動態創建矢量,以便shared_ptr
可以正確管理它:
auto m = make_shared<vector<uint8_t>>();
為什么需要(&)運算符的地址?
因為共享指針通常用於管理用new
創建的對象,而new
提供了一個指針; 因此shared_ptr
的構造函數采用了指針參數。 但是,通常最好使用上面演示的make_shared
函數,而不是與new
混在一起。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.