Code Area(代碼區):程序代碼指令、常量字符串,只可讀。
Static Area(靜態區):存放全局變量/常量、靜態變量/常量。 該區域的大小在程序一加載進內存的時候就已固定,但是靜態變量的值是可以改的。
Heap(堆):由程序員控制,使用malloc/free來操作。
Stack(棧):預先設定大小,自動分配與釋放。
例子1:
例子2:
棧(stack)的實現原理
int abc(int a, int b) //注意:c語言的形參是從右到左入棧的,b先入棧,a后入棧;a先出棧,b后出棧。
{
}
因為c語言是底層語言,包括操作系統本身就是用c語言寫的,所以呢,很多時候是這樣的:用c語言來寫一個庫,再用其他語言來調用。
但是呢,不能保證所有的語言都是從右到左入棧的。所以其他語言在調用c語言寫的庫的時候,要遵循c語言的規范。
例子3