3.2.一、C語言程序所佔內存分類
- 棧(stack):由編譯器自動分配釋放,存放函數的參數值、局部變量的值、返回地址等
- 堆(heap):通常由程序員動態分配(調用malloc()函數)和釋放(調用free()函數)
- 數據段(data):存放的是全局變量、靜態變量、常數。根據存放的數據,又可分爲
- 普通數據段(可讀可寫/只讀數據段,存放靜態初始化的全局變量或常量)
- BSS數據段(存放未初始化的全局變量)
- 代碼段(code):用於存放程序代碼
/*C語言中數據的內存分配*/
int a = 0; /*可讀可寫數據段*/
char *p1 /*BSS段*/
void main()
{
int b; /*b在棧*/
char s[] = "sbc"; /*s在棧,「abc」在常量區*/
char *p2; /*ps在棧*/
static int c = 0; /*可讀可寫數據段*/
p1 = (char *) malloc(10); /*分配的區域在堆區*/
}