代碼區、常量區、靜態區(全局區)、堆區、棧區


一般內存中主要分為:代碼區、常量區、靜態區(全局區)、堆區、棧區。內存示意圖:

棧區:存放函數內的局部變量、形參和函數返回值。系統會自動管理

堆區:由malloc()主動申請、使用free()主動釋放

靜態區(全局區):靜態變量和全局變量,一旦靜態區的內存被分配,靜態區的內存直到程序全部結束才會釋放

常量區:存放常量(例如:10、字符串常量“abcdd”等)

代碼區:存放程序代碼

程序例子:

int a = 0;            //全局初始化區

char *p1            //全局未初始化區

int main()

{

  int b;            //棧

  char s[]= "abc";        //棧

  char *p2;          //棧

  char *p3 = "123456";     //p3在棧上,“123456”在常量區

  static int c = 0;        //全局初始化區

  p1 = (char *)malloc(10);    //堆區分配空間

  strcpy(p1, "123456");     

}

stm32 內存配置:

默認分配的ROM區域是0x8000000開始,大小是0x20000的一片區域,那么這篇區域是只讀區域,不可修改,也就是存放的代碼區和常量區。
默認分配的RAM區域是0x20000000開始,大小是0x4000的一片區域,這篇區域是可讀寫區域,存放的是靜態區、棧區和堆區。該芯片的內部分區如下圖所示:

總結:

大小端:

1.小端模式:低字節存在低地址上,高字節存在高地址上。

2.大端模式:低字節存在高地址上,高字節存在低地址上。


免責聲明!

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



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