内存区域结构:

Memory
                            ------------------
                           |      Heap       |
                           |------------------|
                           |      Stack       |
                           |------------------|
                           | Static Variables|
                           |------------------|
                           |      Code       |
                           |------------------|

堆区与栈区:

堆区是用户自己创建的内存空间,例如使用C++里的malloc,如果使用完不手动释放,容易发生内存泄漏。栈是系统给开发人员自动分配的空间,在运行结束后,也会自动释放。

Call stack 调用栈,英文直接简称“the stack”,别称为运行时栈(run-time stack),执行栈(execution stack),控制栈(control stack)与机器栈(machine stack)。是计算机科学中存储系统正在运行的子程序消息的栈,几乎所有的计算机程序都依赖于调用栈,而高级语言一般把调用栈的信息隐藏至后台。在调用栈中,压入的一组数据称为一个stack frame,一个stack frame包括一个函数和它的参数。

堆的空间要远远大于栈,开发人员可以分配的最大的堆的大小就是系统的内存,但是对于栈来说,64位的Windows最大的栈的大小是1MB,Linux系统是10MB。

引用数据类型往往在栈中存储指针,该指针指向堆中该实体的起始地址。

深拷贝与浅拷贝:

这个概念只针对Object和Array这样的引用数据类型,浅拷贝只复制了指针,而不复制对象本身,新旧对象还是共享同一块内存,对新对象的修改会影响旧对象的值。深拷贝会创造一个一模一样的对象,新对象与原来的对象不共享内存,二者之间没有任何关系,对新对象的修改不会影响旧对象。

堆与栈,深拷贝与浅拷贝的区别相关推荐

  1. js深拷贝和浅拷贝的区别

    js深拷贝和浅拷贝的区别 如何来区分深拷贝和浅拷贝,其实简单,例如: 就是我声明一个obj对象,如何让var a直接等于obj,然后有在obj新增个fun,此时的a也会随着新增个fun,相同a新增数据 ...

  2. C++深拷贝与浅拷贝的区别-简单易懂

    C++深拷贝与浅拷贝的区别-简单易懂 介绍 浅拷贝就比如像引用类型,而深拷贝就比如值类型. 浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同).对其中任何一个对象的改动都会影响另 ...

  3. java -- 深拷贝和浅拷贝的区别 如何实现深拷贝和浅拷贝

    文章目录 1. 深拷贝和浅拷贝的区别 1.1 浅拷贝实例 1.1.1 测试1 直接赋值 1.1.2 测试2 改变源对象的值 1.2 深拷贝实例 `这是用于深拷贝的测试类` 1.2.1 方法一: 构造函 ...

  4. Python基础:对象的深拷贝和浅拷贝的区别

    Python基础:对象的深拷贝和浅拷贝的区别 1 变量与对象 2 不可变对象与可变对象 3 直接赋值 4 浅拷贝 5 深拷贝 参考文献 1 变量与对象 对象:内存中存储数据的实体,有明确的类型.在Py ...

  5. python 深拷贝_详解python的复制,深拷贝和浅拷贝的区别

    概述 今天主要来看看Python中的浅拷贝和深拷贝内容,这里用一个实例来说明~ 需求: 将一个列表的数据复制到另一个列表中. 思路: 使用列表[:],拿不准可以调用copy模块. 实现方法: #!/u ...

  6. c++深拷贝和浅拷贝的区别?

    c++深拷贝和浅拷贝的区别 浅拷贝 深拷贝 总结 浅拷贝 对一个已知对象进行拷贝,编译系统会自动调用一种构造函数--拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数,调用一次构造函数 ...

  7. Python中深拷贝与浅拷贝的区别?

    往期面试题: 列举Python中的标准异常类? 说说Python面向对象三大特性? 说说Python中有几种数据类型? 说说Python模块主要分哪三类? 废话不多说,开始今天的题目: 问:说说Pyt ...

  8. java堆和栈 常量池_GitHub - han-guang-xue/difference-of-stack-heap-pool: Java中堆、栈和常量池的区别...

    Java中堆.栈和常量池的区别 栈 堆 常量池的概念 首先我们先了解一下概念,Java把内存分成两种,一种叫做栈内存,一种叫做堆内存. 栈内存 存放基本类型的变量数据和对象类型的引用(请注意存放的是引 ...

  9. python的复制,深拷贝和浅拷贝的区别

    python的复制,深拷贝和浅拷贝的区别 在python中,对象赋值实际上是对象的引用.当创建一个对象,然后把它赋给另一个变量的时候,python并没有拷贝这个对象,而只是拷贝了这个对象的引用 一般有 ...

  10. python中深拷贝与浅拷贝的区别

    ####################python中的数据类型####################### ##########python中的数据类型有6种,分别为:数字类型如int,float ...

最新文章

  1. 高通首次推出AI引擎 打包所有软硬件算力
  2. php truepath,php – 为什么switch(true)具有比if()elseif()更小的NPath复杂度?
  3. MainWindow 简介
  4. [Redis源码阅读]redis持久化
  5. [HDOJ3308]LCIS(线段树,区间合并)
  6. GuavaCache学习笔记二:Java四大引用类型回顾
  7. zabbix自定义key监控mysql主从同步超简单!
  8. python email模块写邮件_python常用模块email----创建简单的文本邮件并发送
  9. 赠送300家门店260亿销售额的零售企业Power BI实战示例数据
  10. php做商品预告,预告:关于php制作桌面软件的方案与未来规划
  11. 客户端连接openfire报错解决
  12. iostate知识要点
  13. 惠普HP LaserJet 1320n 打印机驱动
  14. 京东商城在售食品不合格被通报 律师:平台应承担责任
  15. Codeforces Round #531 (Div. 3) F. Elongated Matrix(状压DP)
  16. 客户体验的时代(2001.12)
  17. 【小工具】文件夹映射为本地磁盘(重启不失效)
  18. 打气球游戏——Burst Balloons
  19. 【软件工程】决策表和决策树
  20. linux进程间通信(IPC) ---无名管道

热门文章

  1. IE等浏览器 怎么查看已经保存在浏览器中的密码?
  2. Linux命令之关闭电源poweroff
  3. Fedora17硬盘安装
  4. linux firefox添加搜索工具栏
  5. airbnb_Airbnb通过旅行回扣秘密地进行IPO申请
  6. 华为软件路由和交换机
  7. (八)OpenCV入门,代码练习,详细注释【信用卡数字识别】【240行】【原创】
  8. 常用的53款免费软件
  9. Shell脚本编程-总
  10. 模仿天猫实战【SSM版】——项目起步