C++内存管理技术内幕

  1. C++内存分配方式
    一个进程被分配的虚拟内存空间包含以下几个区域(从低地址向高地址):文字常量区、代码区、全局区(.data/.bss)、堆区、共享库存储器映射区、栈区、用户栈(存储命令行参数和环境变量)。
    对于这几个区存储的什么内容前面博客有介绍。虚拟内存空间一般是从0x0000 0000-0xffff ffff,大于共4G,前3G是用户空间,后1G是内核空间。
    栈的大小可以设置,在类UNIX平台上,可以在环境变量中设置栈的大小,在Windows平台下,栈的大小在可执行文件当中,一般情况下,不同平台栈空间默认大小如下:

    SunOS/Solaris 8172K bytes (Shared Version),约8M

    Linux 10240K bytes,约10M

    Windows 1024K bytes (Release Version),约1M

    AIX 65536K bytes,是2^16,约128M

    堆大小是可以自己申请的,只要不超过内存都是可以的,最大多少不知道,怎么着都不会超过4G吧。
    malloc/free作用于堆上,new/delete作用于自由存储区。但是由于new是c语言中malloc的简单包装,所以调用系统的new操作符分配的空间其实还是在堆上,所以new操作符分配的对象说它在堆上也合适,说它在自由存储区也合适。但是如果重载new操作符,改用在其他地方分配内存,那么自由存储区的位置就发生了变化,比如可以在全局区。
  2. C++常用内存分配函数
    有new()/delete()、new[]/delete[]、malloc/free,calloc,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值