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里的字符串是作为字符常量存储在程序中的。