1.stack 是存在与某个作用域的一块内存空间,当调用函数时,函数就会形成一个stack 存这它的一些参数、返回地址等,生闷气在函数执行完会自动消灭;

2.heap 是操作系统提供的全局的内存空间,是动态分配的(new),用完了需要手动delete,不然在作用域外还会占用内存,会造成内存泄漏;

3.static 静态的,生命期直到程序结束;

4.全局变量,生命期为整个程序;

5.new 会先分配空间,在调用构造函数;

6.delete 会先调用析构函数,再释放内存;

*这里我画的红箭头应该是错误的,上下指反了,这里的思想和继承、组合的析构很像,是由外而内的,具体请看:......

7.动态分配内存实际不止分配其类型所占的内存,比如complex其有8个字节:

在debug下会有原complex占的8个字节 + debug要用到的32 + 4 个字节 + 上下2 个cookie的8个字节,因为内存一定要是16的倍数,所以还可能会补一些空的字节填充:

实际运行减掉debug的字节在填充到16倍数的字节就可以。cookie里标识所含字节数,在内存生成时在低位取1,所以是其字节数+1,释放时就正常取0;

7.对于动态分配的array,会加一个4字节的表示array 的个数:

8.为什么new array 删除时要用 delete[ ]呢?因为只用delete 的话只会唤醒一次delete,删除的只有array[0],用delete[ ]就算告诉编译器它是数组还可能有要删的内存,不然会导致内存泄漏!

最新文章

  1. 5 分钟上手 ECharts
  2. SQL Server 未保存.sql文件,还想查看、修改一些建表语句、存储过程等怎么办?
  3. 关于oracle sql developer乱码的问题
  4. python_way day15 HTML-DAY2 HTML-DAY2、JS
  5. Linq To SQLite by CRUD
  6. Linux Shell多进程并发以及并发数控制
  7. [转载]linux下mysql 自动备份
  8. ajax来判断用户是否登录与添加
  9. H5WebSocket前后台代码
  10. linux C 获取与修改IP地址
  11. 如何向android studio中导入第三方类库
  12. PyTorch入门(一)向量
  13. centos6安装oracle11g过程中报错Error in invoking target “install” of makefile ‘/home/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk’
  14. qml(Qt Quick)做界面
  15. RedHat使用Centos的yum仓库
  16. Flask 学习资源
  17. LARC Caffe笔记(二) 训练自己的img
  18. Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)
  19. Backup your Android without root or custom recovery -- adb backup
  20. python学习笔记(18)--eclipse更换主题

热门文章

  1. @Convert 注解在jpa中进行查询的注意事项
  2. PHP生成器yield使用示例
  3. PHP常见的几种攻击方式
  4. PostGresql listen与notify命令
  5. Vue $nextTick && 过度与动画
  6. 来开源吧!发布开源组件到 MavenCentral 仓库超详细攻略
  7. Halcon C#开发OpenFramegrabber卡死问题
  8. Codeforces Round #606(B-D)
  9. 第七十三篇:解决Vue组件中的样式冲突
  10. Zookeeper及基于Zookeeper的分布式锁总结