内存四区:
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. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性