内存四区:

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;

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

 

原文地址:http://www.cnblogs.com/030622zfy-/p/16861789.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性