C C 的記憶體分布

2021-09-12 14:47:51 字數 867 閱讀 3350

說明:

(1)棧又叫堆疊,非靜態區域性變數/函式引數/返回值等等,棧是向下增長的。

(2)記憶體對映段是高效的i/o對映方式,用於裝載乙個共享的動態記憶體庫。使用者可使用系統介面建立共享共 享記憶體,做程序間通訊。

(3)堆用於程式執行時動態記憶體分配,堆是可以上增長的。

(4)資料段–儲存全域性資料和靜態資料。

(5)**段–可執行的**/唯讀常量。

c中可以延用,但c++也有自己的記憶體管理方式:通過new和delete操作符進行動態記憶體管理。

(1)new/delete操作內建型別

void  test()

注意:

申請和釋放單個元素的空間,使用new和delete操作符,申請和釋放連續的空間,使用new和 delete。

注意:在申請自定義型別的空間時,new會呼叫建構函式,delete會呼叫析構函式,而malloc與free不會。

void* operator new(size_t size)

void operator delete(void *p)

為單個的類過載new和delete

class testclass;

void *teatclass::operator new(size_t size)

void testclass::operator delete(void *p)

int main(void)

C C 記憶體分布

每個程式執行起來以後,它將擁有自己獨立的虛擬位址空間。這個虛擬位址空間的大小與作業系統的位數有關係。例如32位硬體平台的虛擬位址空間的位址可以從0 2 32 1,即0x00000000 0xffffffff,總共4gb大小。在32位windows作業系統中,高位址的2gb位核心空間,使用者空間只有2...

C C 程式的記憶體分布

理解c c 程式中的記憶體分布,可以幫助我們減少程式設計時犯常見的錯誤,如將指向區域性變數的位址返回等。在c c 中,通常可以把記憶體理解成4個分割槽 棧 堆 全域性 靜態儲存區和常量儲存區。1 棧 通常是用於那些在編譯期間就能確定儲存大小的變數的儲存區,用於在函式作用域內 塊作用域 建立 在離開作...

c c 程序記憶體分布詳解

乙個程式呼叫的記憶體主要被劃分為4個區域,分別是棧區,堆區,資料區,區 首先來講講棧區 然後我們來說堆區 接下來是資料區 在main函式內 char str hallo 這裡用乙個指標變數str的記憶體空間存放在棧區裡面佔了sizeof char 個位元組,而系統還分配了6個位元組的空間給 hall...