当前位置: 首页 > news >正文

C++内存区域如何划分说一下(栈和堆那些)

C++内存区域包括栈区域,堆区域,全局/静态区域,常量区域以及代码区(文本区)。

栈区域主要用于存储局部变量,方法调用时的参数,返回的地址等。栈是一种后进后出的数据结构,这就意味着最后存储的内容出现在栈顶,也是第一个释放。在方法之中的临时变量在方法结束之后结束其生命周期,被自动释放。

#include<iostream>
using namespace std;
void func(){
    int num=10;
    cout<<num<<endl;
}
int main(){
    func();
    return 0;
}

堆区域主要用于存储动态分配的变量,例如:

#include<iostream>
using namespace std;
void func(){
    int* num=new int(10);
    cout<<*num<<endl;
    delete num;
}
int main(){
    func();
    return 0;
}

在C++之中使用delete手动释放这部分内存空间或者使用智能指针unique_ptr。

全局/静态区域用于存储全局以及静态的变量,包括在方法之中的使用static标识符表示的变量以及在类之中使用static标识符表示的对象。

例如:

#include<iostream>
using namespace std;
int num=10;
void func(){
    static int value=20;
    cout<<value<<endl;
}
int main(){
    func();
    cout<<num<<endl;
    return 0;
}

静态变量的生命周期贯穿于整个程序。

常量区域用于存储C++之中的常量,例如字符串常量,常量整数等。这部分内容通常是只读的,在程序加载时分配,在程序结束时释放。

代码区域用于存储可执行的逻辑,例如类之中的方法。这部分内容不允许被修改,防止代码在运行当中意外的自我修改出现异常。

相关文章:

  • Scala 中的访问修饰符
  • 初出茅庐的小李博客之Modbus称重传感器调试记录
  • JU TPS研究笔记
  • MySQL基本建表操作
  • 工业单板电脑在电商物流中心的应用案例
  • TOEFL WRITING NOTE
  • c++_二叉树的介绍
  • idea技巧
  • C++中,内存管理和内存泄漏总结
  • AIP-162 资源修订
  • 如何解决python安装scipy时报错
  • Unity 通用UI界面逻辑总结
  • 导轨式ARM工业控制器:组态软件平台的“神经中枢”
  • Windows本地部署OpenManus并接入Mistral模型的实践记录
  • Etcd的安装与使用
  • vulkanscenegraph显示倾斜模型(5.2)-交换链
  • ViT-Small与Vit-Base区别
  • CI/CD—GitLab部署
  • 【redis】数据类型之geo
  • 【GPT入门】第12课 FunctionCall 生成数据库sql代码
  • 小小水蜜桃视频高清在线观看/seo管理系统
  • 十大行情软件网站下载/网络营销的优化和推广方式
  • 网站建设基本知识代码/品牌全网推广
  • 12306网站多钱做的/如何优化网络
  • 可以做宣传的网站/企业seo整站优化方案
  • 做网站遇到的问题及解决方法/搜索引擎网站有哪些