中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

青島網(wǎng)站建設(shè)優(yōu)化質(zhì)量可靠網(wǎng)站推廣的作用

青島網(wǎng)站建設(shè)優(yōu)化質(zhì)量可靠,網(wǎng)站推廣的作用,網(wǎng)站建設(shè)先進(jìn)工作者,中裝建設(shè)屬于什么板塊內(nèi)存管理(1) 1、各類型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)空間2、C內(nèi)存管理方式2.1 針對于內(nèi)置類型分析2.2 針對于自定義類型分析2.3 C語言與C在申請動(dòng)態(tài)內(nèi)存失敗時(shí)的區(qū)別 3、operator new 和 operator delete函數(shù)(重點(diǎn))3.1 底層知識解析3.2 實(shí)現(xiàn)…

內(nèi)存管理(1)

  • 1、各類型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)空間
  • 2、C++內(nèi)存管理方式
    • 2.1 針對于內(nèi)置類型分析
    • 2.2 針對于自定義類型分析
    • 2.3 C語言與C++在申請動(dòng)態(tài)內(nèi)存失敗時(shí)的區(qū)別
  • 3、operator new 和 operator delete函數(shù)(重點(diǎn))
    • 3.1 底層知識解析
    • 3.2 實(shí)現(xiàn)專屬operator new 與 operator delete (了解)

1、各類型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)空間

int globalVar = 1;
static int staticGlobalVar = 1;void Test()
{static int staticVar = 1;int localVar = 1;int num1[10] = {1,2,3,4};char char2[] = "abcd";  //常量數(shù)據(jù)需要在外面加 " "const char* pChar3 = "abcd";int* ptr1 = (int*)malloc(sizeof(int)*4);int* ptr2 = (int*)calloc(4,sizeof(int));int* ptr3 = (int*)realloc(ptr2,sizeof(int)*4);free(ptr1);free(ptr2);
}//(1) globalVar  數(shù)據(jù)段 ;                         staticGlobalVar  數(shù)據(jù)段;    staticVar 數(shù)據(jù)段;
//    localVar   棧區(qū)   ;                         num1   棧區(qū)
//    char2(數(shù)組名\數(shù)組首元素地址)  棧區(qū);       *char2  代碼段
//    pChar3(指針) 棧區(qū);                        *pChar3  代碼段
//    ptr1(指針)   棧區(qū);                        *ptr1   堆區(qū)
//

2、C++內(nèi)存管理方式

// C語言內(nèi)存管理方式在C++中可以繼續(xù)使用,但有些地方就無能為力,而使用起來比較麻煩,因此C++又提出了自己的內(nèi)存管理方式:通過new和delete
// 操作符進(jìn)行動(dòng)態(tài)內(nèi)存管理。

2.1 針對于內(nèi)置類型分析

void Test()
{int* p1 = (int*)malloc(sizeof(int));int* p2 = new int;//申請具有5個(gè)int的數(shù)組int* p3 = new int[5];//申請1個(gè)int的數(shù)組,并初始化為5int* p4 = new int(5);//C++11支持new[] 用{}初始化  C++98不支持//將申請具有5個(gè)int的數(shù)組 進(jìn)行初始化int* p5 = new int[5]{1,2,3};free(p1);delete p2;delete[] p3;delete p4;delete[] p5;//針對內(nèi)置類型,new/delete 跟 malloc/free沒有本質(zhì)的區(qū)別,只有用法的區(qū)別。// new/delete 用法簡化了。
}int main()
{Test();return 0;
}

2.2 針對于自定義類型分析

class A
{
public:A(int a):_a(a){cout<<"A():"<< this << endl;}~A(){cout<< "~A():" <<this << endl;}private:int _a;
};int main()
{//堆上申請空間A* p1=(A*)malloc(sizeof(A));if (0==p1){perror("malloc fail");return 0;}//1、堆上申請空間  2、調(diào)用構(gòu)造函數(shù)進(jìn)行初始化A* p2 = new A;   //調(diào)用默認(rèn)構(gòu)造函數(shù)A* p2 = new A(10); //調(diào)用非默認(rèn)構(gòu)造函數(shù)//申請10個(gè)A類型對象的空間,并進(jìn)行初始化A* p3 = new A[5]{1,2,3,4,5};delete[] p3;  //數(shù)組里的對象,先初始化后析構(gòu)//釋放空間free(p1);//1、調(diào)用 析構(gòu)函數(shù) 清理對象中資源  2、釋放空間delete p2;//結(jié)論: new/delete 是為自定義類型準(zhǔn)備的;//不僅在堆上申請出來,還會(huì)調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)進(jìn)行初始化和清理。//注意:new/delete  new[]/delete[]一定要匹配使用,否則可能會(huì)出問題。return 0;
}

2.3 C語言與C++在申請動(dòng)態(tài)內(nèi)存失敗時(shí)的區(qū)別

int main()
{// malloc失敗返回NULLchar* p1 = (char*)malloc(1024u * 1024u * 1024u * 2 - 1);printf("%p\n",p1);// new失敗,不需要檢查返回值,它失敗是拋異常(異常:是面向?qū)ο笳Z言出錯(cuò)處理的方式)try{//char* p2 = new char[1024u * 1024u * 1024u*2-1];char* p2 = (char*)operator new(1024u * 1024u * 1024u);printf("%p\n", p2);operator delete(p2);}//當(dāng)申請空間失敗時(shí),才會(huì)進(jìn)入catch; 若申請空間成功時(shí),就會(huì)跳過catch;catch (const exception& e){cout<< e.what() <<endl;}return 0;
}

3、operator new 和 operator delete函數(shù)(重點(diǎn))

3.1 底層知識解析

// new和delete 是用戶進(jìn)行動(dòng)態(tài)內(nèi)存申請和釋放的操作符。operator new 和 operator delete是系統(tǒng)提供的全局函數(shù),new在底層調(diào)用operator new全局函數(shù)來
// 申請空間,delete在底層通過operator delete全局函數(shù)來釋放空間。
//
// operator new全局函數(shù)——幫助new開空間——(封裝)調(diào)用malloc{ 若malloc失敗了,符合C++ new的失敗機(jī)制(失敗拋異常)}。 
// operator delete全局函數(shù)——幫助delete釋放空間——(封裝)調(diào)用free 
//
// new的底層分為兩部分:調(diào)用operator new +  調(diào)用構(gòu)造函數(shù); 即:new Type(自定義類型) --> call  operator new【調(diào)用malloc(若開辟空間失敗,會(huì)拋異常)】 +  call Type構(gòu)造函數(shù)
// delete的底層也分為兩部分:調(diào)用operator delete + 調(diào)用析構(gòu)函數(shù);
//
//總結(jié):在C++中,申請和釋放堆上的空間,就用new 和 delete

3.2 實(shí)現(xiàn)專屬operator new 與 operator delete (了解)

//注意:一般情況下不需要對 operator new 和 operator delete 進(jìn)行重載,除非在申請和釋放空間的時(shí)候具有某些特殊的要求。比如:在使用new和delete
// 申請和釋放空間時(shí),打印一些日志信息,來簡單幫助用戶檢測是否存在內(nèi)存泄漏。
//
//當(dāng)我們不寫自己專屬的operator new函數(shù)和 operator delete函數(shù)的時(shí)候,new和delete 會(huì)自動(dòng)調(diào)用C++庫里面的operator new函數(shù)和 operator delete函數(shù)。
//當(dāng)我們自己寫專屬的operator new函數(shù)和 operator delete函數(shù)時(shí),new和delete 會(huì)調(diào)用專屬的operator new函數(shù)和 operator delete函數(shù)來實(shí)現(xiàn)某些特殊的需求。// new -> operator new + 構(gòu)造函數(shù)
// 默認(rèn)情況下,operator new使用全局庫里面的。
// 但每個(gè)類可以去實(shí)現(xiàn)自己專屬operator new;  new這個(gè)類對象,它就會(huì)調(diào)用自己實(shí)現(xiàn)的這個(gè)operator new//實(shí)現(xiàn)類專屬的operator new(優(yōu)先調(diào)用)
struct ListNode
{int _val;ListNode* _next;//內(nèi)存池static allocator<ListNode> alloc;void* operator new(size_t n){cout<< "operator new -> STL內(nèi)存池allocator申請" << endl;void* obj = alloc.allocate(1);return obj;}void operator delete(void* ptr){cout<< "operator delete -> STL內(nèi)存池allocator申請" << endl;alloc.deallocate((ListNode*)ptr,1);}//構(gòu)造函數(shù)struct ListNode(int val):_val(val),_next(nullptr){}
};內(nèi)存池的定義
allocator<ListNode> ListNode::alloc;int main()
{//頻繁地申請 ListNode;想提高效率 —— 申請ListNode時(shí),不去malloc,而是自己定制內(nèi)存池。ListNode* node1 = new ListNode(1); //new先去調(diào)用 類里面的operator new ,如果類里面沒有operator new,就會(huì)去庫里面調(diào)用。ListNode* node2 = new ListNode(2);ListNode* node3 = new ListNode(3);delete node1;delete node2;delete node3;return 0;
}
http://www.risenshineclean.com/news/65061.html

相關(guān)文章:

  • 做網(wǎng)站需要視頻銜接怎么口碑最好的it培訓(xùn)機(jī)構(gòu)
  • 小程序怎么做優(yōu)惠券網(wǎng)站制作一個(gè)網(wǎng)站的基本步驟
  • 建設(shè)網(wǎng)站服務(wù)器三十個(gè)知識點(diǎn)帶你學(xué)黨章
  • 音樂網(wǎng)站模板免費(fèi)源碼教育培訓(xùn)報(bào)名
  • 便利的集團(tuán)網(wǎng)站建設(shè)朋友圈廣告投放平臺(tái)
  • 虞城網(wǎng)站建設(shè)廣州最新重大新聞
  • 上饒網(wǎng)站網(wǎng)站建設(shè)模板建站和開發(fā)網(wǎng)站區(qū)別
  • 創(chuàng)建一個(gè)b2c網(wǎng)站得多少錢廣告推廣代運(yùn)營公司
  • ui界面設(shè)計(jì)尺寸規(guī)范淘寶關(guān)鍵詞優(yōu)化軟件
  • 有沒有專門做針織衫的網(wǎng)站北京搜索優(yōu)化排名公司
  • 甘肅住房建設(shè)廳的網(wǎng)站評論優(yōu)化
  • 動(dòng)態(tài)網(wǎng)頁技術(shù)seo排名優(yōu)化公司
  • 局域網(wǎng)內(nèi)個(gè)人網(wǎng)站建設(shè)軟文大全
  • 太原網(wǎng)站設(shè)計(jì)公司泉州關(guān)鍵詞快速排名
  • 交三百能在網(wǎng)站上找兼職做的地推十大推廣app平臺(tái)
  • 坪地網(wǎng)站建設(shè)包括哪些河源新聞最新消息
  • 淘客推廣平臺(tái)濟(jì)南網(wǎng)站優(yōu)化培訓(xùn)
  • 藍(lán)色腳手架織夢企業(yè)網(wǎng)站模板網(wǎng)站新站整站排名
  • 網(wǎng)站開發(fā)廣告語大全網(wǎng)絡(luò)營銷師課程
  • wordpress主題圖標(biāo)亂碼武漢seo搜索引擎優(yōu)化
  • 深圳市龍崗區(qū)疫情百度推廣優(yōu)化是什么?
  • 做網(wǎng)上商城網(wǎng)站設(shè)計(jì)靠譜的廣告聯(lián)盟
  • 哈爾濱做網(wǎng)站哈爾濱學(xué)院seovip培訓(xùn)
  • icp備案網(wǎng)站接入信息 ip地址段怎么創(chuàng)建個(gè)人網(wǎng)站
  • wordpress commentseo優(yōu)化人員
  • 深圳網(wǎng)站開發(fā)哪家服務(wù)專業(yè)怎么申請網(wǎng)站
  • 網(wǎng)站后臺(tái)用什么做優(yōu)化流程
  • 臨沂網(wǎng)站開發(fā)如何優(yōu)化企業(yè)網(wǎng)站
  • 東軟 網(wǎng)站群平臺(tái)建設(shè)怎么利用互聯(lián)網(wǎng)推廣
  • 專門做網(wǎng)站代購的盈利路子郴州seo