国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當前位置: 首頁 > news >正文

網站上傳照片失敗東莞seo外包公司哪家好

網站上傳照片失敗,東莞seo外包公司哪家好,網絡銷售形式,外貿建站哪家強外貿網站怎么做shared_ptr shared_ptr繼承自__shared_ptr,其中有兩個對象,一個是指向資源的指針,一個是控制塊,指向一個引用計數對象??刂茐K中存儲了強引用和弱引用的計數,強引用Uses代表shared_ptr對象的引用計數,弱引…

shared_ptr

shared_ptr繼承自__shared_ptr,其中有兩個對象,一個是指向資源的指針,一個是控制塊,指向一個引用計數對象。控制塊中存儲了強引用和弱引用的計數,強引用Uses代表shared_ptr對象的引用計數,弱引用Weaks代表weak_ptr對象的引用計數。
在這里插入圖片描述
大概結構如上圖所示,控制塊其中也存儲了指向資源的指針。
因此在構造一個shared_ptr對象的時候,會有兩次堆分配,一次是為資源分配,一次是為控制塊分配。因為每一個指向這份資源的指針對象都需要看到同一份引用計數,因此跟資源一樣也是堆分配的。多次的堆分配和釋放也就代表效率上的損失,而且極易產生內存碎片。

make_shared

C++11同時提供了make_shared函數,這是通過構造一個shared_ptr對象,而這個對象會事先申請一塊足夠大的內存空間,用于存放管理的資源以及控制塊。即分配的堆空間是連續(xù)的,因此只有一次堆內存分配。

在這里插入圖片描述
內存的結構就從左邊的構造shared_ptr對象到右邊的重構對象資源指針和引用計數。
相比shared_ptr構造,減少一次內存分配,提高效率,并且內存空間連續(xù),減少內存碎片產生。但是,make_shared也存在缺點。

make_shared的缺點

自定義deleter

make_shared在構造智能指針對象的時候不能自定義deleter。在創(chuàng)建對象時同時創(chuàng)建控制塊,這個控制塊內部包含了引用計數、deleter等與管理資源相關的信息。因為資源和控制塊是屬于同一塊申請的內存,所以使用自定義deleter可能會導致控制塊內存被不正確地釋放。因此,如果要使用deleter,應該使用shared_ptr直接構造。

構造函數

因為make_shared需要用到類的拷貝構造,因此需要被管理的類的構造函數是public的。

內存延遲歸還

因為分配的空間是連續(xù)的,在資源指針的Uses變?yōu)?之后,控制塊伴隨資源的資源不會被立即釋放,要等Weak也變?yōu)?,整塊內存才被釋放。資源只是被clear,但是但是沒有歸還操作系統(tǒng)。而如果是默認的控制塊,在資源指針的Uses變?yōu)?之后,資源會被立即釋放,內存立即歸還。

通過調試看直接構造和make_shared的區(qū)別

void test2()
{std::shared_ptr<string> p1 = std::make_shared<std::string>(10, '9');{std::weak_ptr<std::string> wptr1;wptr1 = p1;std::shared_ptr<string> p2 = std::make_shared<std::string>("Hello");wptr1 = p2;p2 = p1;}std::cout << "end";
}void test1()
{std::shared_ptr<string> p1 = std::shared_ptr<std::string>(new std::string(10, '9'));{std::weak_ptr<std::string> wptr1;wptr1 = p1;std::shared_ptr<string> p2 = std::shared_ptr<std::string>(new std::string("Hello"));wptr1 = p2;p2 = p1;}std::cout << "end";
}int main()
{test1();test2();return 0;
}

直接構造在這里插入圖片描述

當wptr指向p1的時候,可以看到p1的Weaks變?yōu)榱?,weak_ptr觀察到的內容與p1一致。并且注意此時control block的value顯示為default,表示默認的控制塊。
在這里插入圖片描述
當weak_ptr指向p2,并且將p2指向p1,意思就是p2原來管理的Hello資源要釋放掉,然后用p1拷貝構造一個對象,賦值給p2,讓p1和p2同時管理10個9。
此時可以看到weak_ptr的資源指針已經顯示Error reading,說明資源已經釋放,內存已經歸還了。

make_shared構造

在這里插入圖片描述
此時可以看到原來為default的control block已經改為了make_shared。
在這里插入圖片描述
重復之前的操作,把p2指向p1,再看weak_ptr的成員??梢钥吹絧tr指向的資源并沒有被釋放,只是內容并清空而已。只有當weak_ptr的生命周期結束,整個內存塊才會被釋放,歸還給操作系統(tǒng)。
這就是make_shared最主要的缺點,在某些內存要求高的場景下可能不太適用。

http://aloenet.com.cn/news/39092.html

相關文章:

  • 網站版權文字seo排名賺app最新版本
  • 做設計一般用的素材網站是什么長沙百度搜索排名
  • 蘇州建設培訓中心網站國際形勢最新消息
  • 地稅網站如何做稅種確認長沙百家號seo
  • webydo生成的網站能下載代碼嗎網站權重是什么意思
  • 電子商務網頁設計論文搜索引擎優(yōu)化seo網站
  • 如何做網站網頁焊工培訓心得體會
  • wordpress信用卡收款百度seo標題優(yōu)化軟件
  • 哪些企業(yè)需要網站建設的seo站長網怎么下載
  • 代理注冊公司怎么樣成都抖音seo
  • dw網站制作廊坊百度快照優(yōu)化排名
  • 使用三劍客做網站柳州網站建設哪里有
  • 做鋼絲繩外貿的網站免費拓客軟件哪個好用
  • 個人可以做慈善網站嗎關聯詞有哪些關系
  • 知名網站建設企業(yè)nba湖人最新新聞
  • 網站設計 韓國關鍵詞排名優(yōu)化公司哪家好
  • 網站建設公司怎么盈利高明公司搜索seo
  • 做介紹美食網站的菜單的傳媒網站
  • 阿里云做電影網站嗎常用的關鍵詞挖掘工具
  • 郴州seo排名搜外網 seo教程
  • 網站空間500m是什么百度 指數
  • 如何申請免費的網站空間優(yōu)化營商環(huán)境的意義
  • 重慶做網站公司有哪些產品推廣方案怎么寫
  • 北京南昌企業(yè)網站制作創(chuàng)建網站需要什么條件
  • 上海網站推廣服務公司網絡推廣電話銷售技巧和話術
  • 個人網站的色彩設計怎么做香港服務器
  • 手機端企業(yè)網站模板新聞稿范文300字
  • 江蘇省建設廳網站建造師欄網絡推廣圖片
  • 網頁設計與制作視頻seo網絡推廣優(yōu)勢
  • 安平誰做網站好如何推廣自己的業(yè)務