当前位置: 首页 > wzjs >正文

玉溪建设网站百姓网站制作

玉溪建设网站,百姓网站制作,山东网站建设价格,中小型网站建设怎么样1 程序的内存模型 C在执行代码时,将内存分为4个区域,不同区域存放的数据,赋予不同的生命周期。 代码区:存放函数体的二进制代码,由操作系统管理;全局区:存放全局变量、静态变量和常量&#xf…

 1 程序的内存模型

C++在执行代码时,将内存分为4个区域,不同区域存放的数据,赋予不同的生命周期。

  • 代码区:存放函数体的二进制代码,由操作系统管理;
  • 全局区:存放全局变量、静态变量和常量;
  • 栈区:由编译器自动分配释放,存放函数的参数值、局部变量等;
  • 堆区:由程序员分配和释放,若程序员不释放,则程序结束时由操作系统回收。

1.1 内存四区---代码区

        代码区是程序运行前分的,在程序编译后运行前,分为代码区和全局区。代码区存放CPU执行的机器指令。

特点:

  • 共享:对于频繁被执行的程序,只需要在内存中有一份代码即可。
  • 只读:防止程序域外修改其中的指令。

1.2 内存四区---全局区

        存放全局变量、静态变量和常量。该区域的数据在程序结束后由操作系统释放

代码如下:

#include <iostream>
using namespace std;//定义全局变量
int g_a=10;
int g_b=10;
const int c_g_a=0;
const int c_g_b=0;int main()
{//全局区//存放全局变量//定义普通局部变量int a=10;int b=10;cout<<"局部变量a的地址为:"<<(long long)&a<<endl;cout<<"局部变量b的地址为:"<<(long long)&b<<endl;cout<<"全局变量g_a的地址为:"<<(long long)&g_a<<endl;cout<<"全局变量g_b的地址为:"<<(long long)&g_b<<endl;//定义静态变量static int s_a=0;static int s_b=0;cout<<"静态变量s_a的地址为:"<<(long long)&s_a<<endl;cout<<"静态变量s_b的地址为:"<<(long long)&s_b<<endl;//定义常量//字符串常量cout<<"字符串常量的地址为:"<<(long long)&"hello C++"<<endl;//const修饰的全局变量cout<<"全局常量c_g_a的地址为:"<<(long long)&c_g_a<<endl;cout<<"全局常量c_g_b的地址为:"<<(long long)&c_g_b<<endl;//const修饰的局部变量const int c_l_a=0;const int c_l_b=0;cout<<"局部常量c_l_a的地址为:"<<(long long)&c_l_a<<endl;cout<<"局部常量c_l_b的地址为:"<<(long long)&c_l_b<<endl;return 0;
}

输出如下:

全局变量的内存地址相近,与局部变量的地址相差明显远。

1.3 内存四区---栈区

        由编译器自动分配释放,存放函数的参数值、局部变量等,不要返回局部变量的地址(函数执行完之后会自动释放),栈区开辟的数据由编译器自动释放

代码如下:

#include <iostream>
using namespace std;int* func()
{int a=0;//局部变量return &a;//返回局部变量的地址 报错(函数返回类型加一个 * 返回局部变量的地址就不会报错)
}int main()
{//接收func函数的返回值int * p=func();cout <<*p<<endl;//报错return 0;
}

错误示例:

1.4 内存四区---堆区

        由程序员分配和释放,若程序员不释放,则程序结束时由操作系统回收。在C++中用new在堆区开辟内存

代码如下:

#include <iostream>
using namespace std;int* func()
{//利用new将数据开辟到堆区int * p=new int(10);//用指针接收内存地址编号return p;
}void func1()
{//在堆区开辟数组int * arr=new int[10];//用指针接收内存地址编号for(int i=0;i<10;i++){arr[i]=i+100;}for(int i=0;i<10;i++){cout<<arr[i]<<endl;}//释放数组delete[] arr;
}int main()
{//接收func函数的返回值,接收的是在堆中开辟的地址,而不是局部变量在栈中的地址int * p=func();cout <<*p<<endl;cout <<*p<<endl;//手动释放内存delete p;cout<<*p<<endl;//报错 内存已被释放,再访问不会输出正确的值func1();return 0;
}

输出如下:


文章转载自:

http://8AIsq3mj.jwtwf.cn
http://S7GPjyjq.jwtwf.cn
http://Go0R2rLX.jwtwf.cn
http://JNeHxnhJ.jwtwf.cn
http://tuoG2Uql.jwtwf.cn
http://gpGbVRLd.jwtwf.cn
http://3jjKtQ4z.jwtwf.cn
http://qpQvPdYb.jwtwf.cn
http://vm04rkGQ.jwtwf.cn
http://BrtgHL2a.jwtwf.cn
http://c7TP7ubG.jwtwf.cn
http://jrJvf2Qk.jwtwf.cn
http://5mA8xVUR.jwtwf.cn
http://lJ8jkkvj.jwtwf.cn
http://AAD65hpO.jwtwf.cn
http://ie9zjaZU.jwtwf.cn
http://f6FK05TD.jwtwf.cn
http://Sp9g2Sbk.jwtwf.cn
http://lHW8EP9n.jwtwf.cn
http://wuwKwtgM.jwtwf.cn
http://VnH7hqcD.jwtwf.cn
http://dIsfyNx1.jwtwf.cn
http://HbdjjSZG.jwtwf.cn
http://HrorGRFI.jwtwf.cn
http://j9zfIxUK.jwtwf.cn
http://4jc7MFQz.jwtwf.cn
http://Uq0ZttvT.jwtwf.cn
http://xTdmZbld.jwtwf.cn
http://txvBgDTK.jwtwf.cn
http://5QfniQA2.jwtwf.cn
http://www.dtcms.com/wzjs/700104.html

相关文章:

  • 电子商务系统网站设计wordpress修改固定链接后无法访问
  • 深圳市企业网站建设哪家好汽车网站建设方案预算
  • 国外创意网站设计欣赏开发帮官方网站
  • 网站源码是html怎么转成php网站wordpress支付宝登录界面
  • 彩票网站的建设wordpress中文链接404
  • 帝国cms如何做网站猎聘网招聘官方网站
  • 弄个网站多少钱智慧团建网页版登录入口
  • 网站掉权重是怎么回事做营销网站设计
  • 视频网站 费用兼职给企业做网站
  • 蚌埠百度做网站苏州园区做网站公司
  • 公司网站制作流程秦皇岛做网站公司汉狮价格
  • 网站开发学习运行一个网站的成本
  • 中小型网站建设服务网站建设英文怎么说
  • 做公司网站要什么资料钉钉小程序开发
  • 杭州建站网站建设基于php的图书管理系统论文
  • 建设银行防钓鱼网站福州网站建设 联系yanktcn 05
  • 腾讯广告投放推广平台在北京做网站seo多少钱
  • 又名林州站长网网站开发网络课程
  • 海口网站排名做宠物网站
  • 网站开发美学 2.0怎么做化妆品网站内容规划
  • 商洛做网站多少钱小程序商城首页设计
  • 桥东网站建设网页设计尺寸规格
  • phpcms企业网站源码网站开发高级工程师专业
  • 建设信源网站购物网站后台设计
  • 手机门户网站建设方案云服务器可以放几个网站
  • 网站后台图片编辑器校园网站建设初探论文
  • 做棋牌网站违法吗怎么开网店流程
  • 怎么做自己的淘宝网站用dw做网站用div布局
  • 外包做网站需要多少钱启东市建设局网站
  • 重庆做网站的网站地址是什么