[应用相关] C语言内存分区程序

[复制链接]
205|1
AdaMaYun 发表于 2025-8-31 23:49 | 显示全部楼层 |阅读模式
  1. #include "main.h"
  2. #include <string.h> //用于字符串处理
  3. #include <stdio.h>        //用于printf打印
  4. #include <stdlib.h> //用于分配堆区---调用malloc和free

  5. #include "delay.h"
  6. #include "uart3.h"
  7. #include "led.h"

  8. //全局区
  9.                 int         q1;                //未初始化全局变量
  10. static         int         q2;                //未初始化静态变量       
  11. const          int           q3;                //未初始化只读变量               

  12.                 int   m1=1;                //已初始化全局变量
  13. static  int   m2=2;                //已初始化静态变量

  14. //常量区
  15. const   int   m3=3;                //已初始化只读变量
  16.                                
  17. int main(void)
  18. {
  19.         SystemCoreClockUpdate(); //设置系统时钟为72M
  20.         LED_GPIO_Config();
  21.         Uart3_init();
  22.        
  23.         while(1)
  24.         {
  25.                 //栈区       
  26.                 int          mq1;                        //未初始化局部变量
  27.                 int          *mq2;                        //未初始化局部指针变量
  28.                        
  29.                 int           mq3=3;                //已初始化局部变量       
  30.                 char         qq[10] = "hello"; //已初始化局部数组
  31.                
  32.                 const          int   mq4;                        //未初始化局部只读变量
  33.                 const   int   mq5=3;                //已初始化局部只读变量
  34.                                
  35.                 //堆区
  36.                 int *p1 = malloc(4);    //已初始化局部指针变量p1
  37.                 int *p2 = malloc(4);    //已初始化局部指针变量p2               
  38.                                
  39.                 //全局区
  40.                 static         int         mp1;                        //未初始化局部静态变量       
  41.                 static  int   mp2=2;                //已初始化局部静态变量
  42.        
  43.                 //常量区
  44.                 char *vv = "I LOVE YOU";//已初始化局部指针变量
  45.                 char *mq = "5201314";
  46.        
  47.                 printf("\n栈区-变量地址\n");
  48.                 printf("未初始化局部变量                 :0x%p\r\n",&mq1);
  49.                 printf("未初始化局部指针变量                :0x%p\r\n",&mq2);
  50.                 printf("已初始化局部变量                        :0x%p\r\n",&mq3);
  51.                 printf("已初始化局部数组                        :0x%p\r\n", qq );
  52.                
  53.                 printf("未初始化局部只读变量                 :0x%p\r\n",&mq4);
  54.                 printf("已初始化局部只读变量                :0x%p\r\n",&mq5);
  55.                
  56.                 printf("\n堆区-动态申请地址\r\n");
  57.                 printf("已初始化局部int型指针变量p1   :0x%p\r\n", p1);
  58.                 printf("已初始化局部int型指针变量p2   :0x%p\r\n", p2);

  59.                 printf("\n全局区-变量地址\n");
  60.                 printf("未初始化全局变量         :0x%p\r\n",&q1);
  61.                 printf("未初始化静态变量                :0x%p\r\n",&q2);
  62.                 printf("未初始化只读变量                :0x%p\r\n",&q3);
  63.                
  64.                 printf("已初始化全局变量         :0x%p\r\n",&m1);
  65.                 printf("已初始化静态变量                :0x%p\r\n",&m2);

  66.                 printf("未初始化局部静态变量         :0x%p\r\n",&mp1);
  67.                 printf("已初始化局部静态变量         :0x%p\r\n",&mp2);                       
  68.                
  69.                 printf("\n常量区地址\n");
  70.                 printf("已初始化只读变量                  :0x%p\r\n",&m3);
  71.                 printf("已初始化局部指针变量          :0x%p\r\n",vv );
  72.                 printf("已初始化局部指针变量          :0x%p\r\n",mq );
  73.                
  74.                 printf("\n代码区地址\n");
  75.                 printf("程序代码区main函数入口地址        :0x%p\n", main);

  76.                 led485_flicker();
  77.                 delay_ms(1000);
  78.                
  79.                 free(p1);
  80.                 free(p2);        
  81.         }
  82. }


szt1993 发表于 2025-8-31 23:55 | 显示全部楼层
ST的基础知识问题了解一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

305

主题

2593

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部