• C++内存分区概念


    在C++中,内存可以分为几种不同的区域,每种区域用于存储不同类型的数据,它们包括:

    静态存储区(Static Storage Area):

    • 全局区(Global Area):也称为全局静态区,用于存储全局变量静态变量,他们的共同点是生命周期等于应用程序的生命周期。
    • 常量区(Constant Area):常量区用于存储常量数据,如字符串常量和全局的 const 变量。

    栈区(Stack): 栈区用于存储函数调用的上下文和局部变量。每次调用函数时,将分配一部分栈内存用于存储局部变量和函数调用信息。当函数退出时,这些局部变量将自动销毁。

    堆区(Heap): 堆区用于动态分配内存,通常由程序员手动分配和释放。堆内存的生存期不受函数作用域的限制,可以在程序的任何地方进行分配和释放。C++中的 new 和 delete 操作符或者 malloc() 和 free() 函数用于在堆区分配和释放内存。

    以上所有分区,在物理内存上没有任何区别,他们都是内存上一块区域,只是操作系统和语言层面上,对其进行区分,因为这样可以方便管理和优化

    • 静态存储区栈区堆区的主要区别是生命周期不同
    • 静态存储区又分为两个全局区和常量区,他们的生命周期相同,区别是读写权限不同
    • 根据以上这些区别,编译器、操作系统就可以做不同程度的优化和管理

    全局变量、静态全局变量、函数内部静态变量都是存放在全局区,而全局常量、静态全局常量、函数内部静态常量都存放在常量区

  • 相关阅读:
    触发点击事件,标签高亮显示
    不确定性问题的论文笔记
    LQR与LQG问题
    【面试题精讲】为什么重写equals时必须重写hashCode方法?
    【长文】带你搞明白Redis
    Google Earth Engine(GEE)——GEE错误结果没有变化?
    IO day7
    【LeetCode】881 救生艇 中等题
    期货交易记录20240626
    【性能测试】Jmeter+InfluxDB+Grafana 搭建性能监控平台
  • 原文地址:https://blog.csdn.net/Motarookie/article/details/133225225