首页 > 生活常识 > 正文

函数中定义的对象是在栈中还是在堆中

摘要:函数中定义的对象是在栈中还是在堆中?首先说明这里的堆和栈不等同于数据结构中堆和栈的概念。这里的堆和栈都是内存中的一部分,有着不同的作用,而且一个程序需要在这片区域上分...

函数中定义的对象是在栈中还是在堆中

函数中定义的对象是在栈中还是在堆中?

首先说明这里的堆和栈不等同于数据结构中

堆和栈的概念。这里的

堆和栈都是内存中的一部分,有着不同的作用,而且一个程序需要在这片区域上分配内存。

1

栈内存

(stack)

栈是用来存储函数内部(包括main函数)的局部变量和方法调用和函数参数值,是由系统自动分配的,一般速度较快;存储地址是连续且存在有限栈容量,会出现溢出现象。

2

堆内存

(heap)

堆是由corder手动分配释放的,通过malloc和new等动态申请内存的语句使用,也需要用户手动回收(或可能在程序结束时OS自动回收),而对于面向对象程序来说,new出来的任何对象,无论是对象内部的成员变量,局部变量,类变量,他们指向的对象都存储在堆内存中(但指针本身存在栈中),一般速度较栈慢;存储地址通常是链式的,内存较大不会溢出。


个人的理解,有错希望大牛指出,谢谢。

以上内容延伸阅读:

堆和栈的区别是什么?

申请方式的不同:栈由系统自动分配,而堆是人为申请开辟。

申请大小的不同:栈获得的空间较小,而堆获得的空间较大。

申请效率的不同:栈由系统自动分配,速度较快,而堆一般速度比较慢。

空间大小不同:栈:获取空间较小。 在Windows下,一般大小是1M或2M,当剩余栈空间不足时,分配失败overflow。 堆:获得空间根据系统的有效虚拟内存有关,比较灵活,比较大。

生长方向不同:栈: 向低地址扩展的数据结构,是一块连续的内存的区域。 栈:有2种分配方式:静态分配和动态分配,静态由编译器完成,例如局部变量;动态由alloca函数实现,并且编译器会进行释放。 堆: 都是动态分配的,没有静态分配的堆。

以上就是堆和栈的区别,希望可以帮助到您。

js栈内存和堆内存的区别?

首先JavaScript中的变量分为基本类型和引用类型。基本类型就是保存在栈内存中的简单数据段,而引用类型指的是那些保存在堆内存中的对象。

1、基本类型

基本类型有Undefined、Null、Boolean、Number 和String。这些类型在内存中分别占有固定大小的空间,他们的值保存在栈空间,我们通过按值来访问的。

2、引用类型

引用类型,值大小不固定,栈内存中存放地址指向堆内存中的对象。是按引用访问的。如下图所示:栈内存中存放的只是该对象的访问地址,在堆内存中为这个值分配空间。由于这种值的大小不固定,因此不能把它们保存到栈内存中。但内存地址大小的固定的,因此可以将内存地址保存在栈内存中。 这样,当查询引用类型的变量时, 先从栈中读取内存地址, 然后再通过地址找到堆中的值。对于这种,我们把它叫做按引用访问当我们看到一个变量类型是已知的,就分配在栈里面,比如INT,Double等。其他未知的类型,比如自定义的类型,因为系统不知道需要多大,所以程序自己申请,这样就分配在堆里面。基本类型大小固定,引用类型大小不固定,分开存放使得程序运行占用内存最小。

3、栈内存:存放基本类型。 堆内存:存放引用类型(在栈内存中存一个基本类型值保存对象在堆内存中的地址,用于引用这个对象。)

4、基本类型在当前执行环境结束时销毁,而引用类型不会随执行环境结束而销毁,只有当所有引用它的变量不存在时这个对象才被垃圾回收机制回收。

本文于2023-12-20 14:18:01发表在866l生活。本文链接:https://www.866l.com/t/16941852848572.html

相关文章

  • 冰球比赛为什么要擦冰

    冰球比赛为什么要擦冰?在冰壶比赛中,冰壶掷出后,己方的刷冰员可在冰壶通过标的区的圆心线之前进行刷冰;之后,则对方主将有权进行刷冰,又称擦冰,以使冰壶离开圆心。刷冰主要是起到两
  • cpu温度多高才安全90度会烧坏吗

    cpu温度多高才安全?90度会烧坏吗?2、一般CPU在九十度左右会关机,这时CPU已接近过热会影响寿命,不过CPU只要自己能停机就不会损坏。二、扩展资料中央处理器(CPU),是电子计算机的主
  • 碱性电池和碱性干电池一样么

    碱性电池和碱性干电池一样么?一样碱性电池亦称为碱性干电池、碱性锌锰电池、碱锰电池,是锌锰电池系列中性能最优的品种.适用于需放电量大及长时间使用.电池内阻较低,因此产生
  • 路由器写的开启无线广播是什么意思

    路由器写的开启无线广播是什么意思?是否开启无线广播在路由器中的含义指的是:是否让无线信号接收端如手机或智能电视、笔记本、带有无线网卡的台式机等带有无线接收模块的设备
  • 怎么查看QQ被撤回的消息

    怎么查看QQ被撤回的消息? 要查看QQ被撤回的消息,你可以参考以下方法:1. 通过QQ聊天记录:如果你的QQ聊天记录没有开启自动销毁功能(可在设置中调整),当有人撤回消息时,你可以在聊