真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C++智能指針對(duì)程序文件大小有什么影響

本篇內(nèi)容介紹了“C++智能指針對(duì)程序文件大小有什么影響”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、永定網(wǎng)絡(luò)推廣、小程序定制開(kāi)發(fā)、永定網(wǎng)絡(luò)營(yíng)銷、永定企業(yè)策劃、永定品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供永定建站搭建服務(wù),24小時(shí)服務(wù)熱線:18982081108,官方網(wǎng)址:www.cdcxhl.com

C++智能指針對(duì)程序文件大小的影響

于是我想做一個(gè)實(shí)驗(yàn),看智能指針會(huì)帶來(lái)多大的文件體積開(kāi)銷。

于是做了個(gè)對(duì)比實(shí)驗(yàn):

raw_ptr.cpp

#include < iostream>

#include < vector>

using namespace std;

class Child;

class Parent {

public:

~Parent();

Child* newChild();

void hello() {

cout << "Parent::Hello" << endl;   }   private:   vector children_;   };   class Child {   public:   Child(Parent *p) : parent_(p) {}   void hello() {   cout << "Child::Hello" << endl;   parent_->hello();

}

private:

Parent *parent_;

};

Child* Parent::newChild()

{

Child *child = new Child(this);

children_.push_back(child);

return child;

}

Parent::~Parent()

{

for (int i = 0; i < children_.size(); ++i)   delete children_[i];   children_.clear();   }   int main() {   Parent p;   Child *c = p.newChild();   c->hello();

return 0;

}

smart_ptr.cpp

#include < iostream>

#include < vector>

#include < memory>

using namespace std;

class Child;

class Parent : public enable_shared_from_this {

public:

~Parent();

shared_ptr newChild();

void hello() {

cout << "Parent::Hello" << endl;   }   private:   vector > children_;

};

class Child {

public:

Child(weak_ptr p) : parent_(p) {}

void hello() {

cout << "Child::Hello" << endl;   shared_ptr sp_parent = parent_.lock();   sp_parent->hello();

}

private:

weak_ptr parent_;

};

shared_ptr Parent::newChild()

{

shared_ptr child = make_shared(weak_from_this());

children_.push_back(child);

return child;

}

Parent::~Parent()

{

children_.clear();

}

int main() {

shared_ptr p = make_shared();

shared_ptr c = p->newChild();

c->hello();

return 0;

}

empty.cpp

#include < iostream>

int main()

{

std::cout << "hello" << std::endl;   return 0;   }   Makefile   all:   g++ -o raw_ptr raw_ptr.cpp -O2   g++ -o smart_ptr smart_ptr.cpp -O2   g++ -o empty empty.cpp -O2   strip raw_ptr   strip smart_ptr   strip empty   empty 是什么功能都沒(méi)有,編譯它是為了比較出,raw_ptr.cpp 中應(yīng)用程序代碼所占有空間。   將 raw_ptr 與 smart_ptr 都減去 empty 的大?。?   raw_ptr 4192B   smart_ptr 8360B   而 smart_ptr 比 raw_ptr 多出 4168B,這多出來(lái)的就是使用智能指針的開(kāi)銷。

目前來(lái)看,智能指針額外占用了一倍的程序空間。它們之間的關(guān)系是呈倍數(shù)增長(zhǎng),還是別的一個(gè)關(guān)系?

那么引入智能指針是哪些地方的開(kāi)銷呢?

大概有:

類模板 shared_ptr, weak_ptr 為每個(gè)類型生成的類。

代碼邏輯中對(duì)智能指針的操作。

第一項(xiàng)是可預(yù)算的,有多少個(gè)類,其占用的空間是可預(yù)知的。而第二項(xiàng),是很不好把控,對(duì)指針對(duì)象訪問(wèn)越多越占空間。

總結(jié):

使用智能指針的代價(jià)會(huì)使程序的體積多出一半。

“C++智能指針對(duì)程序文件大小有什么影響”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!


當(dāng)前名稱:C++智能指針對(duì)程序文件大小有什么影響
標(biāo)題網(wǎng)址:http://weahome.cn/article/jeejch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部