靜態區域和動態區域記憶體的分配

2021-08-31 06:02:30 字數 934 閱讀 8050

//動態區域分配記憶體

#include

using namespace std;

char *stra()

void getmemory(char **p,int num)

int main()

這是在動態區域中分配記憶體:char *str = null;這只是宣告了乙個指標,並沒有給指標分配位址,也就是說如果想用這個指標,必需給它分配記憶體,(一般常用的方法是在宣告的時候就給指標分配記憶體),呼叫getmemory()給指標分配記憶體,這裡的*p=(char *) malloc(sizeof((char *)num));在堆中給str分配一定大小的空間。

str = stra();是把函式stra()返回的位址給str,這樣就出現問題了,那麼剛才getmemory()給指標分配記憶體就沒有用到,str直接指向函式stra()返回的位址。怎麼改正這個問題?

//動態區域分配記憶體

#include

using namespace std;

char *stra()

//void getmemory(char **p,int num)

//int main()

2.如何在靜態儲存區內分配記憶體

//如何在靜態區域分配記憶體

#include

using namespace std;

const char *stra()

//void getmemory(const char **p,int num)

//int main()

這段**不知能否在靜態儲存區內分配記憶體,字串hello world分配在那個區域?

記憶體動態分配與靜態分配and儲存區域

1.c語言的全域性變數 靜態區域性變數的儲存實在編譯時確定的,其儲存的空間的實際分配在程式開始執行前完成。2.在棧上建立的,比如區域性自動變數,在執行進入變數定義所在的復合語句時為他們分配儲存單元。棧記憶體分配運算內置於處理器的指令集中 效率很高,但是分配的記憶體容量有限。3.以靜態方式安排儲存的好...

c c 變數記憶體分配區域

乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式倒是類...

C語言程式的儲存區域 記憶體布局

c語言程式的儲存區域 由c語言 文字檔案 形成可執行程式 二進位制檔案 需要經過編譯 彙編 連線三個階段。編譯過程把c語言文字檔案生成匯程式設計序,彙編過程把匯程式設計序形成二進位制機器 連線過程則將各個原始檔生成的二進位制機器 檔案組合成乙個檔案。c語言編寫的程式經過編譯 連線後,將形成乙個統一檔...