[英]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_ptr或shared_ptr 。
號std::atomic<T*>
具有一個瑣碎的析構函數,它不執行任何操作,因此,如果擁有它,則無法刪除任何內容。
std::atomic<int>
不“擁有”該整數,它只是存儲一個值,類似地, std::atomic<int*>
僅存儲一個值,沒有所有權或隱含暗示。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.