//動態區域分配記憶體
#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語言編寫的程式經過編譯 連線後,將形成乙個統一檔...