堆空间

在程序运行过程,为了能够自由控制内存的生命周期、大小,会经常使用堆空间的内存

堆空间的申请\释放

malloc \ free
C++面向对象的内存布局 二(堆空间)
new \ delete
C++面向对象的内存布局 二(堆空间)
new [] \ delete []
C++面向对象的内存布局 二(堆空间)

注意
申请堆空间成功后,会返回那一段内存空间的地址
申请和释放必须是1对1的关系,不能回收一部分,不然可能会存在内存泄露
现在的很多高级编程语言不需要开发人员去管理内存(比如Java),屏蔽了很多内存细节,利弊同时存在
利:提高开发效率,避免内存使用不当或泄露
弊:不利于开发人员了解本质,永远停留在API调用和表层语法,对性能优化无从下手

C++面向对象的内存布局 二(堆空间)
若函数调用完,若没有释放堆空间,就没有指针指向这个堆空间了

堆空间的初始化

C++面向对象的内存布局 二(堆空间)
C++面向对象的内存布局 二(堆空间)

memset

◼ memset函数是将较大的数据结构(比如对象、数组等)内存清零的比较快的方法
C++面向对象的内存布局 二(堆空间)

总结

对象的内存可以存在于3种地方

全局区(数据段):全局变量

栈空间:函数里面的局部变量

堆空间:动态申请内存(malloc、new等)

C++面向对象的内存布局 二(堆空间)

相关文章:

  • 2021-10-22
  • 2021-04-12
  • 2021-06-14
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-16
  • 2021-05-27
  • 2021-08-14
  • 2021-11-27
相关资源
相似解决方案