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

网站建设方案风险分析长沙长沙h5网站建设

网站建设方案风险分析,长沙长沙h5网站建设,珠海营销型网站,wordpress 访客 用户这篇文章我们来谈论一下计算机的内存。在这里#xff0c;我们着重讨论内存的两个部分#xff1a;栈与堆。我们需要注意的一点是#xff0c;这两个概念不是虚拟的#xff0c;而是在计算机内部真实存在的。它们是我们的CPU当中RAM部分物理上存在的两个区域。我们之所以要重点…这篇文章我们来谈论一下计算机的内存。在这里我们着重讨论内存的两个部分栈与堆。我们需要注意的一点是这两个概念不是虚拟的而是在计算机内部真实存在的。它们是我们的CPU当中RAM部分物理上存在的两个区域。我们之所以要重点关注这两个部分是因为我们在编程的时候需要把我们的变量储存在这两个区域当中。 首先我们来看一下栈。栈的空间很小通常只有2M左右而且这部分是提前定义好了的。堆相对而言空间更大一些也是预定义好的但是堆可以增长。 内存是我们存储数据的地方而栈与堆给出的内存存储方式则是完全不同的。当然这种区分只是存储方式上的区别而存储的数据本身是根本上做的事情是一样的。 比如我们做一个简单的栈分配与堆分配 int value 5; //栈分配 int* hvalue new int; //堆分配 *hvalue 5; 同样的我们也可以做栈/堆分配数组 int value[5]; //栈分配 int* hvalue new int[5]; //堆分配 我们可以看到在堆分配内存的时候我们需要使用new关键字来进行。 进入到内存中我们可以看到栈分配和堆分配的不同。首先我们看一下栈分配在内存中是怎样的我们用如下代码来举例 int value 10; //栈分配 int svalue[5]; svalue[0] 1; svalue[1] 2; svalue[2] 3; svalue[3] 4; svalue[4] 5; 首先我们查找value的位置如下所示 然后我们再来查找svalue的位置其实我们可以从上一张图里面看到svalue的位置就在value后面不远的地方 对比一下这两个地址我们就会发现它们的距离实际上非常近这还是因为在debug的模式下编译器会自动帮我们填充一些safety guard实际上它们就应该是紧挨着的。我们在栈分配的时候本质上就是栈顶的指针不停的移动然后帮我们分配内存所以栈分配的速度非常快。同样在栈内存释放的时候其实也就是指针直接移动回到开头在CPU当中就是一条指令的事情。 但是如果我们用同样的操作看堆分配的结果那就是完全不同了同样的例子 int* value new int; //堆分配 *value 10; int* hvalue new int[5]; hvalue[0] 1; hvalue[1] 2; hvalue[2] 3; hvalue[3] 4; hvalue[4] 5; 然后我们分别查询value和hvalue两个指针指向的位置 可以明显看到这两者的位置差的非常远。不论我们使用new还是智能指针其实都是会使用堆分配也都会出现这种情况。 new关键字实际上做的事情是调用了malloc函数。在我们程序启动的时候我们的操作系统会调一部分RAM内存分配过来当我们使用malloc时会启动一个叫做free list的东西来检查内存的空闲状况。这个list会记录目前空闲内存的大小以及该内存起始位置。malloc函数会在其中寻找一块足够大的内存然后返回指向这块内存的指针从而实现动态内存分配的效果。 但是malloc是一个非常笨重的函数因为它需要进行很多记录工作。如果我们要求的内存超出了当前记录的最大内存那么程序还会向操作系统要求分配更多的内存而这个过程会更加缓慢。所以堆分配内存有着很高的潜在成本因为它涉及了一系列的工作。 栈分配是一个CPU指令而堆分配是一系列工作这是这两者最大的区别同时也导致了两者性能上的差别堆分配的速度会明显更慢。而且堆分配还会产生cache misses在数量很多可能以百万计的时候也会带来问题。 所以我们在分配内存的时候应该优先在栈上分配内存除非我们需要很大一部分内存。这个是非常真实的性能区别但是访问栈内存和堆内存倒是没有什么明显区别。 以上就是本篇文章的全部内容了希望大家喜欢
http://www.tj-hxxt.cn/news/138542.html

相关文章:

  • 可以看的网站都有哪些天津网站建设吐鲁番地区
  • 网站设计都用什么字体深圳app网站建设陈俊兵
  • 东莞做一个企业网站国内快速建站
  • 墨客网站建设1.申请网站空间
  • 企业网站建设哪家优惠做一个网站如何做
  • 培训机构查询网昆明网站的优化
  • 网络营销竞价推广seo优化的内容有哪些
  • 宣城市建设监督管理局网站网站做专题页面
  • 注册公司不经营一年费用抚顺优化seo
  • 谷歌网站开发语言安康市城市建设开发总公司网站
  • 商业网站开发设计报告wordpress文章导入插件
  • 刷单类网站开发越秀营销型网站建设
  • 论坛网站备案流程图网站备案检验单
  • 西宁做手机网站的公司搜狗推广登录app
  • 怎样做网站变手机软件商业网站建设心得体会
  • 深圳国外网站建设比尤果网做的好的网站
  • 正邦 网站建设网络推广策划方案
  • 注册网站如何备案网站关键词优化的步骤
  • 卡地亚手表官方网站58同城建筑招聘网最新招聘
  • 做网站怎样做全页面服装设计个人工作室
  • 做网站需要知道哪些事情品牌营销推广
  • qq互联网站备案号龙岗外贸网站建设公司
  • 凡客建站登陆西安商城网站开发
  • 南京做网站优化的企业排名学设计在哪学比较好
  • 办公空间设计网站网站设计属于什么经营范围
  • 网站栏目页描述怎么写wordpress分享可见内容
  • wordpress网站背景设置方法电话语音聊天网站建设多少钱
  • 电子商务网站开发设计黑龙江建设网网上办事大厅
  • 济南市做网站的公司怎么做网站扩展
  • 网站进度条源代码juqery-ui建设网站目的及功能定位