程序内存模型-内存四区,拿下拿下

“0基础,学it,月薪过万,就来潶🐎程序”

今天听了老师对内存四区的讲解,

写写笔记,做做记录

有错误欢迎您及时指教ヾ(≧ ▽ ≦)ゝ

持续更新ing

一、内存四区的基本介绍

 

二、代码区

如上,存放我们写的代码的区域,不过在存储时转化成了机器懂的二进制语言

它有两个特点:共享和只读

我理解的是:

共享:这段程序,不管执行多少次,每次都是用的内存中的这一份代码;

只读:只能执行,不能改。

代码区是一张报纸,可以拿去无数次翻阅,但是只能翻阅,不能修改内容

三、全局区

一个平平无奇的存放全局变量,静态变量,常量的地方,

不过这里的常量包括:const修饰的变量(全局的和局部的)和字符串常量等等

可以酱紫看下他们的地址,

 

可以直观看出,局部变量和其他孩子的家差很多嘛

总结区分一哈:

 四、栈区

一个存放局部变量的地方,由编译器自动分配释放

【局部变量就是在函数内部定义的变量,包括函数的参数】

所以函数结束后编译器会自动释放的

所以不要返回局部变量的地址哦,

不过编译器会为我们保留一次,但是就一次而已

就像下面这个程序

但是

喏,第二次就乱码啦

五、堆区-new操作符

由写代码的我们自己分配和释放的区域,但是程序结束时也会由操作系统回收

在这里要提到一个new操作符

也就是用new,我们可以自己管理开辟数据

可以在栈区开辟一个堆区的数据,

或者说在栈区创建的一个数据在堆区分配内存

如下图

在栈区创建一个指针存放在堆区的数据的地址:

int  *p=new int(10);

这里,在输出多少次*p,结果都不会变

程序员同时可以对他进行释放操作:

同样,它还可以开辟数组空间 

int *arr=new int[10];

就酱:

释放,要加上【】才可以

先这样叭,在学到新东西喽俺就再补

毕竟嘛,学习这件事永远未完待续喽

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值