C++变量存在了哪

Published: 26 Mar 2015 Category: C++

用于存放进程运行中被(new malloc等)动态分配的内存段。需要由程序员自己释放。大小上限等于机身内存。里面有个链表存储空闲内存块。内存不是连续的。寻址是由低到高。需要程序员自己释放内存。分配效率低(毕竟需要一定时间找可用内存)。

常用来存储局部变量、函数参数。编译器在需要时分配,不需要时自动消除。内存块是连续的。存储上限很小,具体存在差异(VC是1M),存入是由高位地址到低位地址。内存是连续的一块区域。和数据结构中的栈的方式很相似。分配效率高。函数调用也是用栈去完成

全局变量/初始化 (.data段)

存放已初始化的全局变量以及局部作用域的static变量

全局变量/未初始化 (.bss段)

存放未初始化的全局变量。在目标文件中这个段不占据实际的空间,它仅仅是一个站位符,在加载时这个段用0填充。也就是为什么全局变量没有初始化系统会自动初始化为0。

常量存储区 (.rodata段)

存放只读数据,里面存常量,不可以更改。像全局作用域中的const int cnt = 10,cnt 存放在这里。cout«“hello”«endl;”hello”也存放在这里。

代码段 (.text段)

存放已经编译程序的机器代码