簡體   English   中英

共享向量指針

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM