存储区域

代码区:用于代码所在的内存的区域,存放的时函数体的二进制代码。

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

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

堆区:试用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”也是一样的。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值