.BSS段:存放未初始化的全局变量,不分配内存,仅记录所需内存大小。该段属于静态内存分配。该段大小可从可执行文件中得到,
然后连接器得到这个大小的内存块,紧跟在数据段的后面。
数据段:存放初始化的全局变量,也属于静态内存分配。
代码段:存放程序执行代码的一块区域,这部分区域的大小在程序执行前就已经确定,并且通常属于只读。
堆:存放进程运行中动态分配的内存段,大小不固定,可动态扩张或缩减。malloc 函数分配的内存就会被动态添加到堆上,利用 free 函数释放内存时,被释放的
内存会从堆上删除。
栈:用于存放程序创建的临时变量(auto型的局部变量)。另外,在函数被调用时,它的参数也会被压入栈中(发起调用的进程栈),调用结束后,函数的返回值也会被
存放在栈中。所以,栈特别适合用来保存现场,我们可以吧栈看成是一个寄存、交换临时数据的内存区。
阅读(1206) | 评论(0) | 转发(0) |