簡體   English   中英

具有原子變量的指針所有權

[英]Pointer ownership with atomic variables

“包含”指針的原子變量是否擁有該指針的所有權?

考慮以下代碼段:

{
    std::atomic<Foo*> bar(new Foo());
}

// `bar' went out of scope, did it delete pointer to instance of Foo?

當然,我可以自己導出和刪除它,或者以其他方式解決它。 但這不是重點。

如果有的話,這里定義的行為是什么?

不,唯一的std::atomic保證是對象將擺脫數據競爭。 因此,您將釋放指針指向自己的內存。

如果要使用托管動態內存容器,則可以使用unique_ptrshared_ptr

std::atomic<T*>具有一個瑣碎的析構函數,它不執行任何操作,因此,如果擁有它,則無法刪除任何內容。

std::atomic<int>不“擁有”該整數,它只是存儲一個值,類似地, std::atomic<int*>僅存儲一個值,沒有所有權或隱含暗示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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