代码区、常量区、静态区(全局区)、堆区、栈区


一般内存中主要分为:代码区、常量区、静态区(全局区)、堆区、栈区。内存示意图:

栈区:存放函数内的局部变量、形参和函数返回值。系统会自动管理

堆区:由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