欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:開發(fā)語(yǔ)言 C++——內(nèi)存管理

柚子快報(bào)激活碼778899分享:開發(fā)語(yǔ)言 C++——內(nèi)存管理

http://yzkb.51969.com/

C/C++內(nèi)存分布

我們要知道,C/C++中程序內(nèi)存區(qū)域主要分為內(nèi)核空間、棧、內(nèi)存映射段、堆、數(shù)據(jù)段、代碼段

棧:存放局部變量、函數(shù)參數(shù),在執(zhí)行函數(shù)的時(shí)候,函數(shù)內(nèi)的局部變量的存儲(chǔ)單元會(huì)在棧上創(chuàng)建,函數(shù)執(zhí)行完后就會(huì)自動(dòng)釋放

堆:程序員自己申請(qǐng)的一塊任意大小的內(nèi)存,這個(gè)內(nèi)存一直存在,需要手動(dòng)釋放,不然會(huì)造成內(nèi)存泄漏,申請(qǐng)的過程也叫作動(dòng)態(tài)內(nèi)存分配(new 、malloc、realloc等動(dòng)態(tài)申請(qǐng)空間的函數(shù)/關(guān)鍵字/表達(dá)式)

數(shù)據(jù)段(靜態(tài)區(qū)):已經(jīng)初始化:全局變量,全局靜態(tài)變量、局部靜態(tài)變量、常量數(shù)據(jù)。

代碼段(常量區(qū)):顧名思義,就是用于可執(zhí)行代碼。字符串常量的區(qū)域。

C語(yǔ)言中動(dòng)態(tài)內(nèi)存的管理方式

malloc/calloc/realloc/free

那么這幾個(gè)申請(qǐng)函數(shù)的區(qū)別在哪里?

轉(zhuǎn)載——calloc、malloc、realloc函數(shù)的區(qū)別及用法_魏波.的博客-CSDN博客

C++中動(dòng)態(tài)內(nèi)存的管理方式

為了解決C語(yǔ)言中申請(qǐng)內(nèi)存的麻煩問題以及弊端,C++中引出了' new '和' delete '兩個(gè)操作符進(jìn)行動(dòng)態(tài)內(nèi)存管理

new和delete用法

int main()

{

//動(dòng)態(tài)申請(qǐng)一個(gè)int類型的空間

int* arr1=new int;

delete arr1;

//動(dòng)態(tài)申請(qǐng)一個(gè)int類型的空間并且初始化為10

int* arr2=new int(10);

delete arr2;

//動(dòng)態(tài)申請(qǐng)10個(gè)int類型的空間

int* arr3=new int[10];

delete[] arr3;

//動(dòng)態(tài)申請(qǐng)10個(gè)int類型的空間并且初始化多個(gè)對(duì)象

int* arr4=new int[10]{1,2,3,4};

delete[] arr4;

return 0;

}

自定義類型

class A

{

public:

A(int a = 0)

: _a(a)

{

cout << "A():" << this << endl;

}

~A()

{

cout << "~A():" << this << endl;

}

private:

int _a;

};

int main()

{

A* p1 = (A*)malloc(sizeof(A));

A* p2 = new A(1);

free(p1);

delete p2;

// 內(nèi)置類型是幾乎是一樣的

int* p3 = (int*)malloc(sizeof(int));

int* p4 = new int;

free(p3);

delete p4;

A* p5 = (A*)malloc(sizeof(A)*10);

A* p6 = new A[10];

free(p5);

delete[] p6;

return 0;

}

malloc/free和new/delete的區(qū)別

malloc/free和new/delete的共同點(diǎn)是:都是從堆上申請(qǐng)空間,并且需要用戶手動(dòng)釋放。不同的地 方是:

1. malloc和free是函數(shù),new和delete是操作符

2. malloc申請(qǐng)的空間不會(huì)初始化,new可以初始化

3. malloc申請(qǐng)空間時(shí),需要手動(dòng)計(jì)算空間大小并傳遞,new只需在其后跟上空間的類型即可,

如果是多個(gè)對(duì)象,[]中指定對(duì)象個(gè)數(shù)即可

4. malloc的返回值為void*, 在使用時(shí)必須強(qiáng)轉(zhuǎn),new不需要,因?yàn)閚ew后跟的是空間的類型

5. malloc申請(qǐng)空間失敗時(shí),返回的是NULL,因此使用時(shí)必須判空,new不需要,但是new需 要捕獲異常

6. 申請(qǐng)自定義類型對(duì)象時(shí),malloc/free只會(huì)開辟空間,不會(huì)調(diào)用構(gòu)造函數(shù)與析構(gòu)函數(shù),而new

在申請(qǐng)空間后會(huì)調(diào)用構(gòu)造函數(shù)完成對(duì)象的初始化,delete在釋放空間前會(huì)調(diào)用析構(gòu)函數(shù)完成 空間中資源的清理

內(nèi)存泄漏

內(nèi)存泄漏指因?yàn)槭韬龌蝈e(cuò)誤造成程序未能釋放已經(jīng)不再使用的內(nèi)存的情況。內(nèi) 存泄漏并不是指內(nèi)存在物理上的消失,而是應(yīng)用程序分配某段內(nèi)存后,因?yàn)樵O(shè)計(jì)錯(cuò)誤,失去了對(duì) 該段內(nèi)存的控制,因而造成了內(nèi)存的浪費(fèi)。 內(nèi)存泄漏的危害:長(zhǎng)期運(yùn)行的程序出現(xiàn)內(nèi)存泄漏,影響很大,如操作系統(tǒng)、后臺(tái)服務(wù)等等,出現(xiàn) 內(nèi)存泄漏會(huì)導(dǎo)致響應(yīng)越來越慢,最終卡死。

內(nèi)存泄漏分類

堆內(nèi)存泄漏(Heap leak)

堆內(nèi)存指的是程序執(zhí)行中依據(jù)須要分配通過malloc / calloc / realloc / new等從堆中分配的一 塊內(nèi)存,用完后必須通過調(diào)用相應(yīng)的 free或者delete 刪掉。假設(shè)程序的設(shè)計(jì)錯(cuò)誤導(dǎo)致這部分 內(nèi)存沒有被釋放,那么以后這部分空間將無法再被使用,就會(huì)產(chǎn)生Heap Leak。

系統(tǒng)資源泄漏

指程序使用系統(tǒng)分配的資源,比方套接字、文件描述符、管道等沒有使用對(duì)應(yīng)的函數(shù)釋放 掉,導(dǎo)致系統(tǒng)資源的浪費(fèi),嚴(yán)重可導(dǎo)致系統(tǒng)效能減少,系統(tǒng)執(zhí)行不穩(wěn)定。

柚子快報(bào)激活碼778899分享:開發(fā)語(yǔ)言 C++——內(nèi)存管理

http://yzkb.51969.com/

好文閱讀

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19051817.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄