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

邯郸网站建设报价互联网广告联盟

邯郸网站建设报价,互联网广告联盟,长春有免费做网站的么,电子商务型网站2023年8月20日,周日早上 感觉很多东西还没吃透,很多疑问还没解决。 这篇文章可能会不定期更新。 还没解释为什么栈的空间有限,而堆的空间很大 还没解释栈和堆在内存中的位置 ...... 目录 怎么申请栈空间语法举例说明 怎么申请堆空间语法…

2023年8月20日,周日早上

感觉很多东西还没吃透,很多疑问还没解决。

这篇文章可能会不定期更新。

还没解释为什么栈的空间有限,而堆的空间很大

还没解释栈和堆在内存中的位置

......


目录

  • 怎么申请栈空间
  • 语法
  • 举例说明 
  • 怎么申请堆空间
  • 语法
  • 举例说明
  • 注意
  • 栈空间有多大
  • Linux
  •  Windows
  • 堆空间有多大
  • 堆和栈的区别是什么
  • 为什么要有堆,全用栈不行吗
  • 为什么要有栈?
  • 用代码说明堆和栈的一些区别
  • 用栈
  • 用堆

堆和栈都是内存中的一部分,

或者说,堆和栈属于内存空间。

怎么申请栈空间

语法

数据类型 名称;

举例说明 

#include<iostream>class A{};struct B{};int main(){int i;			//申请栈空间存储intdouble d;		//申请栈空间存储doublestd::string s;  //申请栈空间存储stringB b;			//申请栈空间存储结构体BA a; 			//申请栈空间存储类A
}

怎么申请堆空间

语法

数据类型 *名称 = new 数据类型;

举例说明

#include<iostream>class A{};struct B{};int main(){int *i=new int;					//申请堆空间存储intdouble *d=new double;		    //申请堆空间存储doublestd::string *s=new std::string; //申请堆空间存储stringB *b=new B;						//申请堆空间存储结构体BA *a=new A; 					//申请堆空间存储类A
}

注意

new和delete一定要配套,否则会出现内存泄漏。当电脑的内存泄漏太多时,就会因为无内存使用而导致程序崩溃。

栈空间有多大

Linux

在Linux中,可以通过如下命令查看操作系统的栈空间大小

ulimit -a 或 ulimit -s

可以看到,在我的Linux上,栈空间大约只有8M的大小

 Windows

我没找到查看栈空间大小的指令,听说Windows的栈空间大小在2M左右。

堆空间有多大

我也没找到查看堆空间大小的指令,不过可以肯定的是:

堆空间非常大,而且要远远大于栈空间。

堆和栈的区别是什么

它们在以下几个方面有所不同:

分配方式:栈内存由编译器自动分配和释放,而堆内存需要程序员手动申请和释放。

分配速度:栈内存的分配和释放速度较快,仅需要移动指针即可完成。而堆内存的分配和释放速度相对较慢,需要在堆中搜索合适的空间。

空间大小:栈内存的大小通常有限,由编译器或操作系统预先确定,一般较小。而堆内存的大小相对较大,取决于系统的可用内存大小。

数据访问:栈内存的数据访问速度较快,因为它们存储在物理内存中的连续地址空间上。而堆内存的数据访问速度较慢,因为它们是通过指针进行间接访问的。

生命周期:栈内存中的数据的生命周期与其所属的函数或代码块的执行周期相对应。而堆内存中的数据可以在程序的任何地方进行手动分配和释放,生命周期更加灵活。

碎片问题:栈内存不容易产生碎片问题,因为分配和释放是按照先进先出(LIFO)的方式进行。而堆内存容易产生内存碎片,因为分配和释放的顺序不一定是连续的。

需要根据程序的需求,合理选择使用栈或堆内存来存储数据。栈主要用于存储局部变量和函数调用信息,而堆主要用于存储动态分配的数据,如对象、数组等。

为什么要有堆,全用栈不行吗

当然不行,前面说过堆的空间远远大于栈的空间。当需要存储非常大的数据在内存中时,栈根本顶不住,因为栈的空间太有限了,只有堆才有足够的空间来存储。

也就是说,堆的优势在于空间够多。

为什么要有栈?

栈是一个先进先出的数据结构,没有栈,不好管理函数的调用和返回:

栈用于存储函数调用期间的局部变量和函数参数。每当函数被调用时,栈会为该函数分配一块内存空间,用于存储其局部变量和临时数据。当函数执行完毕后,该内存空间会自动释放,以便为其他函数调用提供空间。

也就是说,栈的优势在于先进先出的结构特性。

用代码说明堆和栈的一些区别

用栈

可以看到类A的对象a1在离开了作用域后,内存就被回收了

#include<iostream>
#include<windows.h>
using namespace std;class A{public:A(){cout<<"分配内存"<<endl;}~A(){cout<<"收回内存"<<endl;}
};int main(){{A a1;	//申请一块栈内存来存储类A}while(1){Sleep(1000);cout<<"..."<<endl;}}

 

用堆

可以看到,用堆来存储时,即使离开了作用域,内存也没被回收

#include<iostream>
#include<windows.h>
using namespace std;class A{public:A(){cout<<"分配内存"<<endl;}~A(){cout<<"收回内存"<<endl;}
};int main(){{A *p=new A;	//申请一块堆内存来存储类A}while(1){Sleep(1000);cout<<"..."<<endl;}}

 

http://www.ds6.com.cn/news/86114.html

相关文章:

  • 安徽网站建设qq群推广方法
  • 网站建设的经济社会效益网站策划书
  • 龙泉公路建设投资有限公司网站新浪体育最新消息
  • 网站建设开发技术类型网络营销竞价推广
  • 广告设计制作公司网站怎么让付费网站免费
  • 外网搭建seo工资一般多少
  • 有范app的网络营销方式网站seo优化排名
  • 机械免费网站制作国内搜索引擎排名第一
  • 网站服务器ip地址怎么查品牌营销策略分析
  • 网站建设怎么付费在线培训
  • 佛山做外贸网站服务seo sem是什么
  • seo网站内容优化网络建站流程
  • 社交网站 模板常见的微信营销方式有哪些
  • 产品review网站怎么做西安seo排名
  • 那些网站可以做行测题韶关网站seo
  • 小程序网站建设云搜索app
  • logo设计网站国外免费顶级域名注册网站
  • 吉浦网站建设爱站工具包的主要功能
  • 济南市城乡建设委官方网站seo排名首页
  • 重庆营销型网站开发价格网站关键词优化排名
  • 济宁网站建设公司怎么样外包优化网站
  • wordpress 如果分类文山seo公司
  • 大型社区网站开发文档怎么下载app到手机上
  • 做网站设计需要学会哪些html网页模板
  • 站长工具一区文案短句干净治愈
  • 建一个商城网站多少钱如何制作网页游戏
  • 非80端口做网站乔拓云建站平台
  • 表白墙网站怎么做阿里云域名查询和注册
  • 专业做域名的网站英文seo是什么意思
  • wordpress仿站教程2016cilimao磁力猫搜索引擎