printf中打印的字符串在生成的bin文件的什么区域

printf中打印的字符串在生成的bin文件的静态变量区域

实验过程:

1、在工程中加入打印:printf("00000000000000000000000000000000000000000000000000000000000000000 !\r\n")

2、比较更改前、更改后的map文件

  更改前:                                                             

  1、__FUNCTION__ 0x08003134 Data 19 cm_backtrace.o(.constdata)       
  2、.constdata 0x08003168 Section 24 system_stm32f0xx.o(.constdata)      

                                      
  3、.conststring 0x08003180 Section 2169 cm_backtrace.o(.conststring)      
  4、.data 0x20000000 Section 4 stm32f0xx_it.o(.data)              

  

  更改后:

  1、__FUNCTION__                             0x0800313c   Data          19  cm_backtrace.o(.constdata)

  2、.constdata                               0x08003170   Section       24  system_stm32f0xx.o(.constdata)

  3、.conststring                             0x08003188   Section       70  main.o(.conststring)

  4、.conststring                             0x080031d0   Section     2169  cm_backtrace.o(.conststring)

  5、.data                                    0x20000000   Section        4  stm32f0xx_it.o(.data)

  对比可发现,更改之后,增加了常量字符串

3、对比更改前、更改后的bin文件

  更改后的bin文件,在 0x08003188 地址果然后一串字符0.

 

综上:printf里的字符串是作为字符常量存储在程序中的。

 

posted on 2020-07-31 14:25  明日的世界  阅读(252)  评论(0编辑  收藏  举报