c語言中的堆、棧和內存映射


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM