C++-内存四区

内存四区:

1.代码区:

代码区:用来存放你写的代码的,只读和共享。

只读:意思是编译运行后不能操作,其目的是防止程序意外的修改了他的命令。

共享:共享的目的是对于频繁执行的程序,只需要在内存中有一份代码即可。

2.全局区:

全局变量和静态变量存放在此。 静态变量:static+普通变量=静态变量

全局区还包含了常量区字符串常量和其他常量也存放自此。常量:1.字符串常量2.const修饰的变量(1.const修饰的全局变量  2.const修饰的局部变量)

[一.不在全局区中:局部变量,局部常量\ 在全局区中:全局变量,静态变量,字符串常量,全局常量]

3.栈区:

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

注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放。

局部变量存放在栈区,栈区的数据在函数执行完后自动释放。

(形参数据和局部变量放在栈上)

(第一次可以打印正确的始祖,是因为编译器做了保留)

4.堆区:

由程序员分配释放,若程序员不释放,程序结束时由操作系统回收。

在c++中主要利用new在堆区开辟内存。int*p=new int(10) 

 

 

 

 实质是在栈区定义了一个指针型的局部变量,指向了堆区的地址。

new运算符:

int*p=new int(10) ;开辟一个堆区的内存

delete p;释放new开辟的空间

利用new开辟数组

int* arr = new int [10];利用for循环来操控。

for(int i ;i<10;i++)

{

arr[i]=i+100

}

释放堆区的数组

delete[] arr;

释放数组的时候要加[]才可以。

 

posted @   zzzfffffff  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示