您的位置:首页 > 编程语言

存储区域

2013-05-11 10:39 155 查看
代码区:用于代码所在的内存的区域,存放的时函数体的二进制代码。

静态存储区:主要存放静态数据,全局数据和常量数据,内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。

栈区:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。

堆区:试用alloc,new申请出来的空间,都是在堆区(堆区都是存储动态变量)。


静态存储区 栈 堆的区别(字符串常量)


1.静态存储区分为:只读数据(READONLY  DATA)区、可读写数据(RW DATA)区、未初始化区(BSS)。它们都是在程序编译连接阶段确定的,在程序执行的阶段不会改变。

 2.动态存储区分为堆和栈。都是程序执行的过程中动态分配的,大小也随之动态变化。从内存管理的实现的角度看来,堆使用的链表实现的,而栈使用的是线性存储的方法。

以 string为例子:

在函数中 string str=“hello world”;

str 是一个临时变量(指针类型),所以str变量存储在栈区,而str所只想的hello world是一个字符串常量,所以存储在静态存储区,如果执行str=“hello world1”,在计算机内执行的操作是,重新在静态存储区域分配了内存区域,存储hello world1,然后再更改str所值的内存区域(既改变str的指向)。str+=str+“hello world”也是一样的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息