轉 記憶體的四個區域

2021-09-24 21:03:59 字數 884 閱讀 8989

程式被作業系統載入到記憶體時,所有可執行的**被載入到**區,也叫**段,

程式執行這段時間該區域資料不可被修改只可以被執行。

程式被載入到記憶體時就已經分配好,程式退出時才從記憶體中消失。

儲存靜態變數和全域性變數。**執行期間一直占用記憶體!

一種先進後出的儲存結構,所有的自動變數(auto修飾的相當於區域性變數),

函式的引數,函式的返回值都是棧區變數。不需要使用者申請釋放,編譯器自動完成。

乙個比較大的記憶體容器(比棧大),需要我們手動的申請和釋放記憶體。

堆區記憶體的使用函式:標頭檔案#include

1:malloc 申請堆區記憶體。    

void *  malloc(size_t  size);   

size為申請的記憶體的位元組數。申請的空間隨機不會初始化, 所以不知道內部值是多少。

2:free  釋放申請的記憶體。

free(void *ptr);

只能釋放你申請的記憶體,不然就會出錯。

3: calloc  申請堆區記憶體。

void *calloc(size_t nmemb, size_t size); 

nmemb:指定單位的數量,size;單位的數量。

例子:malloc(10*sizeof(int));  ==  calloc(10,sizeof(int));

區別:malloc申請的記憶體不負責初始化,而calloc申請的記憶體已經初始化為0.

4:realloc   可以擴大之前申請的記憶體

void *realloc(void *ptr, size_t size);

ptr 要擴充的區域位址,size 擴充之後的大小。

例子:char *a=(char *)malloc(10*sizeof(char));//10個位元組

c 中記憶體的四個區

在c 中,記憶體被劃分為四個區。區 靜態儲存區 堆和棧。1.區。顧名思義,存放程式 2.靜態儲存區。將程式中的靜態變數 全域性變數存放在此區域 3.堆。程式中,由程式設計師申請的記憶體空間 new malloc 空間的釋放一般也有程式設計師控制 乙個new對應乙個delete 當程式設計師沒有釋放該...

Git的四個工作區域和工作流程

git是一種分布式版本控制系統,可以高效地處理專案的版本管理,包括跨區域的多人協同開發,追蹤和記錄檔案的歷史記錄,組織和保護源 和文件,統計工作量,跟蹤記錄整個軟體的開發過程。1remote 遠端倉庫 2repository 本地倉庫 3index 暫存區4 workspace 工作區位於託管 的伺...

事物的四個特性和四個隔離級別

事物是一條或者多條sql語句組成的執行序列,這個序列中的所有語句都屬於同乙個工作單元,要麼同時完成,其中如果有乙個失敗,則其他操作都要回滾。事物是乙個不可分割的資料庫邏輯工作單位,要麼全部完成,要不失敗回滾。事務執行的結果必須使資料庫從乙個一致性狀態變到另乙個一致性狀態。乙個事物的執行不能被別的併發...