摘要:
这两天在看APUE的进程环境这章,看着看着就觉得自己对可执行文件在内存中的分配理解的一点也不清楚,花了很长时间终于弄明白了,下面我依次说说跟这些有关的内容。C语言进程在运行时,可以分成几个段,这些段从低地址到高地址分别是正文段,初始化数据段、非初始化数据段(bss),栈以及堆。可以在一个可执行文件上运行size命令看到各个段的情况。其中程序的局部变量时存在栈里的,经过初始化的全局和静态变量是存在初始化数据段,bss段存储非初始化的全局变量,然后有一个问题出来了,我们经常看到说不能返回指向局部变量的指针,结果我在程序里验证后发现没有问题,程序如下:int*fun();main(){int*p;p 阅读全文