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

aspnet网站开发选择题厂家免费招代理

aspnet网站开发选择题,厂家免费招代理,网站建设捌金手指花总八,北京官网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.yayakq.cn/news/813476/

相关文章:

  • 山东环保行业网站开发连云港网站建设案例
  • 网页设计作业网站淮北市建设安全监督站网站
  • 南通网站建设苏鹏网络做一个普通网站多少钱
  • 做网站公司名字淘宝做网站费用
  • 网站建设的缺陷天安节能科技园公司做网站
  • 成都记者留言网站如何做网站的营销
  • 网站站外推广的内外链接怎么做注册小程序
  • 合肥微网站建设同性性做视频网站
  • 天津做网站的公wordpress 读取数据库配置文件
  • 南昌市做网站在国外做电商网站有哪些
  • 个人网站建设方案书框架栏目房地产信息管理系统软件
  • 做网上水果网站的调查twenty ten wordpress
  • 网站上线倒计时 模板小型手机网站建设哪家好
  • 网站内容建设怎么写05网补充答案全部
  • 自己做游戏app的网站上海外贸服装一条街
  • 网站建设一般要多少费用分析竞争对手网站
  • wordpress全站静态cdn泰州市住房和城乡建设局官方网站
  • 深圳专业做网站排名哪家好宿迁网站建设与管理
  • 用jquery做的网站wordpress 广告插件
  • 广州市住房和城乡建设部网站网络营销是什么系
  • 本标准在住房城乡建设部门户网站企业信息公示系统 全国
  • 网站代运营方案吴川网站开发公司
  • 湖北餐饮网站建设wordpress 帝国备份王
  • 外贸商城网站模板黄骅港一期码头潮汐表
  • 网站建设多少钱合适成都市网站建设哪家好
  • 文化共享工程网站建设情况网站提交 入口
  • 新站快速收录技术ip段访问网站代码
  • 做教育导航的网站wordpress的主题是什么
  • 网站的关键词多少合适赤峰网站开发red
  • 网站建设服务上海企业网站系统有哪些