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

【C++】C与C++、C++内存空间、堆与栈

C嘎嘎嘎嘎嘎~

C与C++的区别与联系

C++内存空间

int global_var;          // 未初始化全局变量,BSS段
const char* str = "Hello"; // 字符串常量text段 in数据段

void func() {
    static int static_var; // 未初始化的静态变量,数据段
    int local_var;        // 局部变量, 栈
    int* ptr = new int;   // 动态分配内存,堆
}

 

 

堆和栈的区别与联系

特性

内存管理方式

编译器自动管理

程序员手动控制

生命周期

函数作用域

显示释放或由智能指针管理

分配效率

极快(寄存器操作)

较慢(系统调用+复杂管理)

空间利用率

高(连续紧凑)

低(可能存在碎片)

最大尺寸

有限(MB级)

受虚拟内存限制

访问方式

直接访问(LIFO)

随机访问(通过指针)

线程安全

每个线程独立栈

进程内全局共享

增长方向

高地址向低地址方向增长

低地址向高地址方向增长

适用场景

小对象、确定生命周期的临时对象

高频创建/销毁的实例

大内存块需求(大型数组)

多态对象(基类指针操作)

需要跨函数保持状态的对象

相关文章:

  • SAX解析XML:Java程序员的“刑侦破案式“数据处理
  • JS的大数运算(注意:原生的只支持整数计算!!!)
  • 四、Appium Inspector
  • 【小沐学GIS】基于C++绘制三维数字地球Earth(QT5、OpenGL、GIS、卫星)第五期
  • 【AI大模型】大模型RAG技术Langchain4j 核心组件深入详解
  • C++项目 —— 基于多设计模式下的同步异步日志系统(2)(工厂模式)
  • CAD 像素点显示图片——CAD二次开发 OpenCV实现
  • c语言 open函数
  • 「OC」小白书读书笔记——Block的相关知识(下)
  • 实现vlan间的通信
  • 解决单设备号双目摄像头调用难题:经验分享与总结
  • 融媒体中心智能语音识别系统设计与实现
  • 第2个小脚本:批量读取所有英文txt文章内容提取高频的单词
  • Matlab学习笔记五十:循环语句和条件语句的用法
  • 【微服务架构】SpringSecurity核心源码剖析+jwt+OAuth(七):SpringSecurity中的权限管理
  • 【HD-RK3576-PI】系统更新与恢复
  • Spring MVC 是如何将 @RequestMapping 注解映射到对应的 Handler 方法?
  • 【大英赛】大英赛准备笔记
  • MCP基础学习计划详细总结
  • Vue3项目中的前缀和
  • 由我国牵头制定,适老化数字经济国际标准发布
  • 宜昌谱写新叙事:长江大保护与高质量发展如何相互成就
  • 南方降水频繁暴雨连连,北方高温再起或现40°C酷热天气
  • 证券日报:降准今日正式落地,年内或还有降准空间
  • 4月份全国企业销售收入同比增长4.3%
  • 国台办:80年前台湾重归中国版图,80年后不可能让台湾分裂出去