不得不懂的C語言重點 記憶體管理

2021-10-09 04:14:27 字數 2032 閱讀 7499

作用域

1.**塊作用域

double

blocky

(double cleo)

//形式參量具有**塊作用域

2.函式原型作用域

3.檔案作用域

#include

int units=o;

//具有檔案作用域的變數(全域性變數)

intmain

(void

)

鏈結

1.具有**塊作用域或者函式原型作用域的變數具有:空鏈結(表示這些變數是由其定義所在的**塊或者函式原型所私有的);

2.具有檔案作用域的變數:可能有內部或者外部鏈結;(乙個具有外部鏈結的變數可以在乙個多檔案程式的任何地方使用;乙個具有內部鏈結的變數可以在檔案的任何地方使用;);

如下:

int g=5;

//無static,外部鏈結

static

int d=3;

//有,內部鏈結

intmain()

儲存時期自動變數

暫存器變數

具有**塊作用域的靜態變數

具有外部鏈結的靜態變數

extern

char cloo;

intmain

(void

)

int a=1;

//定義宣告

intmain

(void

)

具有內部鏈結的靜態變數
static

int a=1;

int main (

void

)puts

("enter the values(q to quit);");

while

(i < max &&

scanf

("%1f"

,&p[i])==

1)++i;

printf

("這裡有你的%d條"

, number = i)

;for

(i =

0; i < number;i++

)puts

("done");

free

(p);

return0;

}

動態分配記憶體和變長陣列
int n=5;

int m=6;

int ar2[n]

[m];

//變長陣列

int(

*p2)[6

];int(

*p3)

[m];

p2=(

int(*)

[6])

malloc

(n*6

*sizeof

(int))

;//n*6陣列

p3=(

int(*)

[m])

malloc

(n*m*

sizeof

(int))

;//n*m陣列

型別限定詞const

型別限定詞volatile

volatile

int locl;

//locl是乙個易變的位置

volatile

int* ploc;

//ploc是乙個易變的位置

型別限定詞restrict
int ar[10]

;int

* restrict a=

(int*)

malloc(10

*sizeof

(int))

;int

* par=ar;

指標a是訪問malloc()分配的記憶體的唯一且初始的方式。

參考文獻

C語言,不得不重視的記憶體分配

儲存區的劃分 1 棧區 棧區儲存區域性變數,棧區的記憶體是由系統自動管理,系統開闢,系統 無需程式設計師管理.2 堆區 通過堆區記憶體分配函式,分配的空間都在堆區,堆區的最大特點 堆區的空間需要程式設計師手動管理,手動開闢,手動釋放.oc常用 3 常量區 對於字元常量,整型常量,浮點型常量,字串常量...

不得不說的故事 STL記憶體管理

1.概述 stl allocator是stl的記憶體管理器,也是最低調的部分之一,你可能使用了3年stl,但卻不知其為何物。stl標準如下介紹allocator the stl includes some low level mechanisms for allocating and dealloc...

關於動態記憶體不得不說的故事

首先,會用到molloc語句,其實好多小夥伴都已經看出來了,沒錯這就是堆!下面先來介紹一下棧和堆的概念 1 棧 stack 有時候也叫 堆疊 區域性變數所在的記憶體區域,函式可以呼叫,window系統預設大小為1m 2 堆 heap 動態記憶體開闢區域,大小接近1.5g,使用時需要注意釋放記憶體。使...