記憶體高階話題

2021-10-16 17:15:45 字數 961 閱讀 9997

18.1 new,delete的進一步認識

18.1.1 總述與回顧

記憶體有關的高階用法,如記憶體池等

18.1.2 從new說起

new類物件時,加與不加括號的差別

a *pa=

newa()

// 帶號的寫法,類a的成員變數被初始化為0

a *pa2=

new a // 這種寫法,m_i成員變數中是隨機值

但是增加了乙個建構函式後,情況又有所不同,初始化的工作交給建構函式因此不一定會初始化為0

new做了什麼事情

new是關鍵字

new關鍵字主要做了兩件事情

a * pa=

newa()

呼叫operator

new(呼叫了malloc)

呼叫類a的建構函式

可以表示為:

a * pa=

newa()

operator

new();

malloc()

; a::a(

)

delete關鍵字主要做了兩件事情

delete pa;

a::~a

();// 如果有析構先呼叫析構

operator

delete

(); // 函式

free()

;// c分格函式釋放記憶體

new與malloc的區別

new是關鍵字/操作符,malloc是函式

new乙個物件的時候,不但分配記憶體而且還會呼叫類的建構函式

在某些情況下a * pa=new a()可以把a的成員變數設定為0,這是new的能力而malloc沒這個能力

18.2 new記憶體分配細節探秘與過載類內operator new、delete

18.1 new記憶體分配細節探秘

八 高階話題

本章描述bufferevent的一些對通常使用不必要的高階特徵。如果只想學習如何使用bufferevent,可以跳過這一章,直接閱讀下一章。有時候網路程式需要與自身通訊。比如說,通過某些協議對使用者連線進行隧道操作的程式,有時候也需要通過同樣的協議對自身的連線進行隧道操作。當然,可以通過開啟乙個到自...

高階指標話題

來淺顯地 一下稍微複雜的指標.首先要有乙個不可動搖地認識,再厲害的指標也是指標,它存的內容永遠是位址.定義了指標的型別,該指標就只能與這種型別搭配使用.從二級指標開始說 int i int p i int pp p pp是乙個二級指標,指向指標的指標,存的內容是p的位址,型別是 指向整型的指標的指標...

Spring高階話題 Aware

一 aware是什麼?spring aware就是一些定義了spring容器本身功能資源的介面 spring提供的aware介面 介面備註 beannameaware 獲得到容器中bean的名稱 beanfactoryaware 獲得當前 bean factory,這樣可以呼叫容器的服務 messa...