我们都知道:内存大体是分为4个段的 data
text stack heap
其中 代码是存于text段的 局部变量是存于stack 段的 heap是malloc或者new的时候存于这里 data段分为data bass
rodata 三个部分
其中一般的全局变量是存于data段的 const之类定义的全局变量是存于rodata段的 (const定义的局部变量是存在stack的)
而在汇编语言中,在编译和汇编程elf文件的过程中只会给text 段和data段分配空间 而对于heap stack段的数据 只是做一个标记,变为指令进行处理 ,在程序变为进程的时候 stack 和heap 才会开辟,这也是为什么,我们绕过编译器 ,将const定义的局部变量间接改变值可以成功,而直接修改const定义的全局变量无法成功的原因,编译器只会在编译成汇编程序的过程中进行一次语法检查,而在运行时候再进行一次检查