“0基础,学it,月薪过万,就来潶🐎程序”
今天听了老师对内存四区的讲解,
写写笔记,做做记录
有错误欢迎您及时指教ヾ(≧ ▽ ≦)ゝ
持续更新ing
一、内存四区的基本介绍
二、代码区
如上,存放我们写的代码的区域,不过在存储时转化成了机器懂的二进制语言
它有两个特点:共享和只读
我理解的是:
共享:这段程序,不管执行多少次,每次都是用的内存中的这一份代码;
只读:只能执行,不能改。
代码区是一张报纸,可以拿去无数次翻阅,但是只能翻阅,不能修改内容
三、全局区
一个平平无奇的存放全局变量,静态变量,常量的地方,
不过这里的常量包括:const修饰的变量(全局的和局部的)和字符串常量等等
可以酱紫看下他们的地址,
可以直观看出,局部变量和其他孩子的家差很多嘛
总结区分一哈:
四、栈区
一个存放局部变量的地方,由编译器自动分配释放
【局部变量就是在函数内部定义的变量,包括函数的参数】
所以函数结束后编译器会自动释放的
所以不要返回局部变量的地址哦,
不过编译器会为我们保留一次,但是就一次而已
就像下面这个程序
但是
喏,第二次就乱码啦
五、堆区-new操作符
由写代码的我们自己分配和释放的区域,但是程序结束时也会由操作系统回收
在这里要提到一个new操作符
也就是用new,我们可以自己管理开辟数据
可以在栈区开辟一个堆区的数据,
或者说在栈区创建的一个数据在堆区分配内存
如下图
在栈区创建一个指针存放在堆区的数据的地址:
int *p=new int(10);
这里,在输出多少次*p,结果都不会变
程序员同时可以对他进行释放操作:
同样,它还可以开辟数组空间
int *arr=new int[10];
就酱:
释放,要加上【】才可以
先这样叭,在学到新东西喽俺就再补
毕竟嘛,学习这件事永远未完待续喽