什麼是系統記憶體?
答:物理狀況是:記憶體條.
1.棧區—
系統自動分配空間即**空間,——
函式體內定義的變數(區域性變數)存放在棧區,當出了它所屬的函式,系統就把空間**.
如:在main函式裡面定義int a=10;//a存放在棧區,10放在常量區,把常量區的10拷貝乙份,放在棧區,即a(10).
棧區存放的是區域性變數. 2.
堆區—重點:動態記憶體分布———由使用者分配和**,如果程式設計師未**.那麼系統記憶體就會越來越少 ,當記憶體不夠用的時候,程式崩潰.如果沒有達到記憶體的最大值,程式不會崩潰,程式退出時,系統把空間**.
3.靜態區(
全域性區:存放全域性變數的記憶體空間,),————定義在
函式體外面的變數,由系統開闢空間,程式執行過程中一直存在,知道程式退出,由系統**.
如:屬性就是存放在靜態區
4.常量區-用於存放常量的記憶體區域
如10,25,』a』,」helleo」
5.**區://存放**編譯結果的區域.
我們寫的**是源**,電腦不識別,需要編譯,編譯成二進位制,二進位制存放在**區.
堆區的記憶體分配:-----------------------------------重點
malloc分配指定大小的記憶體空間,但是不會把分配的空間清0
//malloc
void * p=malloc(10);//即向系統申請10個記憶體空間,返回首位址,p指向這個首位址
//以上就是開闢記憶體空間,malloc分配指定大小的記憶體空間,但是不會把分配的空間清0
free(p);//釋放記憶體空間
char * str=malloc(8);
strcpy(str,」iphone」);
pritf(%s,str);
free(str);
?表示以前是什麼,還是什麼
free為標記刪除:不清除內容,只是歸還空間(例子:歸還房子)
relese:釋放記憶體
例二:int *p=malloc(4);
*p=30;
//這裡的*是取值
pritf:(「%d」,*p);
free(p);
動態記憶體分配
在c 中建立乙個物件時,我們必須要為這個物件申請一塊記憶體,而且要用建構函式對這塊記憶體進行初始化。c 中的new和delete相對於c的庫函式malloc和free在這方面有很大的優勢,所以我們主要講的是運算子new和delete。當用new來建立乙個物件時,它會自動在堆裡為物件分配記憶體並且為這...
動態記憶體分配
為什麼使用動態記憶體分配?c語言中的一切操作都是基於記憶體的 變數和陣列都是記憶體的別名,如何分配這些記憶體由編譯器在編譯期間決定 定義陣列的時候必須指定陣列唱的 而陣列長度是在編譯期就必須決定的 需求 程式執行的過程中,可能需要使用一些額外的記憶體空間 malloc和free malloc和fre...
動態記憶體分配
c的儲存類別有4種 自動的 auto 靜態的 statics 暫存器的 register 外部的 extern 全域性變數時分配在記憶體中的靜態儲存區 靜態區域性變數屬於靜態儲存類別,在靜態儲存區內分配儲存單元,是在編譯時賦初值的,只賦初值一次,在程式執行時它已有初值,以後每次呼叫函式時不再重新賦初...