C++中的内存

在 C++ 中,内存分为5个区: 堆、栈、自由存储区、全局/静态存储区和常量存储区

栈(stack): 是由编译器在需要时自动分配,不需要时自动清除的变量存储区。通常存放局部变量、函数参数等。
堆(heap): 是由 malloc 分配的内存块,由程序员释放(编译器不管)。若程序员没有释放资源,资源将由操作系统在程序结束后自动回收。
自由存储区(free store): 是由 new 等分配的内存块,和堆十分相似,用 delete 来释放。
全局/静态存储区(global / static store): 全局变量和静态变量被分配到同一块内存中(在C语言中,全局变量又分为初始化的和未初始化的,C++中没有这一区分)。
常量存储区(constant storage): 这是一块特殊存储区,里边存放常量,不允许修改。

(至于堆和自由存储区是否是同一个事物,则要看new 是否能在堆上动态分配内存。这取决于 new 的实现细节,若 new 是借以 malloc 实现的,则可以说它们等价。)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 内存分配方式有三种 从静态存储区域分配内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全...
    linheimx阅读 842评论 0 1
  • 有这样一道阿里笔试题: C++内存分配中说法错误的是( )。A.对于栈来说,生长方向是向上的,也就是向着内存...
    开点工作室阅读 2,169评论 0 3
  • (JG-2014-08-20)(前半部分经过网上多篇文章对比整理)(后半部分根据ExceptionalCpp、C+...
    JasonGao阅读 5,724评论 2 23
  • 感谢前辈 Dablelv 的分享原文 - https://blog.csdn.net/k346k346/artic...
    lc_fan阅读 974评论 0 2
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,471评论 0 13

友情链接更多精彩内容