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

C语言基础 内存管理

第十章 内存管理

./a.out运行起来后,系统会给a.out分配一段内存区域

1 code 存放编写好的c语言代码。只读特性,在运行期间不能修改。

2 data 数据段。存储全局变量,以及被static修改的变量。

细分:

data 数据段,有初值的全局变量和static变量

bss 未初始化的数据段。包含没有给初值的全局变量和static变量。

由系统负责初始化为0。

rodata 只读数据段。包含字符串常量。

3 heap 堆区。<2.9G程序在运行时,需要内存的时候,在堆中申请。相对堆空间比较大,可以自动增长。

如果需要空间,需要手动申请(malloc)。使用完毕后需要手动释放内存(free)。

申请内存后,没有释放的,那么这段空间一直存在,直到释放或程序关闭。由程序员决定生命周期。

4 共享区 只要存储,库函数的实现。比如,printf,scanf共享库(动态库文件)ldd ./a.out

5 栈区 (堆栈)8M内存空间自动申请和释放。局部变量,函数参数,返回地址。出了作用域,内存就会释放。

作用:

1 可以获得相对大的内存。

2 内存使用率提高

#include<stdlib.h> malloc 分配空间内存,参数是需要内存的大小。 返回值是分配到堆内存空间的地址。地址值需保留好,直到释放前。 释放堆内存空间,参数如要传入,当时malloc的返回值。这个值要和当时分配空间的地址值一致。 void free(void*ptr) 释放完后,ptr = NULL,不然ptr是野指针。也不要试图去访问原来的堆空间数据, 从逻辑上认为堆空间数据生命周期结束。

3 内存的泄露

1 只申请堆内存空间不释放。系统内存空间枯竭,程序会异常退出。

2 当申请堆空间后,不小心,保存堆空间地址的指针,被覆盖了,那么原来报错的堆空间就丢失了。

http://www.jsqmd.com/news/881483/

相关文章:

  • 交互式测试与条件有效性:动态数据决策的统计可靠性保障
  • 麒麟系统启动卡住别慌!这可能是磁盘文件系统坏了,试试这几条Linux命令自救
  • 为什么企业要把 EDR 放在终端,HIDS 放在主机?
  • Gemini Omni Flash 完整指南:Google AI 视频生成器深度解析
  • 深入理解RAG中的嵌入模型Embedding Model
  • 陶瓷 3D 打印代加工服务|高精度快交付,研发量产一站式搞定
  • 2026年评价高的昆山扫描电镜/昆山全自动扫描电镜/扫描电镜产品/SEM扫描电镜推荐厂家精选 - 品牌宣传支持者
  • 2026年靠谱的自卸式除铁器定制/潍坊工业除铁器/潍坊矿山除铁器厂家推荐与选型指南 - 行业平台推荐
  • JWT认证深度解析:从签名原理到密钥轮换与灰度升级
  • JavaScript 高频基础面试题
  • 抖音a_bogus生成原理与Python逆向实现全解析
  • 2026年口碑好的温州办公家具/智能办公家具/简约办公家具厂家哪家好 - 行业平台推荐
  • 机器学习对抗概念漂移:恶意浏览器扩展检测的实战与反思
  • LoRa设备射频指纹识别:基于ResNet-34与三重水印的鲁棒认证系统
  • 2026年靠谱的电磁悬挂除铁器/潍坊工业除铁器/潍坊除铁器/永磁自卸除铁器推荐厂家精选 - 品牌宣传支持者
  • esp开发与应用(继电器的使用)
  • YOLO26涨点改进| TIP 2025 |独家创新首发、特征融合改进篇|引入DFAM双特征聚合模块,通过局部纹理先验强化边缘、轮廓信息,助力小目标检测、RGB-D目标检测、多模态融合目标检测有效涨点
  • Kali Linux安装全解析:UEFI/GPT适配、GRUB故障定位与三种部署场景
  • 量子纠错技术:从理论到实践的突破
  • SSH、SNMP、NETCONF、SFTP
  • 刚出炉的 Codeforces Round 1100 B 题:一眼像交换,实则一行贪心公式
  • crypto-js Malformed UTF-8 data 报错根源与字节级修复方案
  • 数据结构——AVL二叉平衡树
  • 对抗性多臂老虎机与EXP4算法:原理、实现与实战调优
  • 中兴光猫工厂模式终极解锁:3分钟掌握免费高效管理工具
  • 用 AI 生成接口文档和测试用例:比“问一句答一句”更适合程序员的会员用法
  • 渗透测试信息收集四层穿透模型与实战流水线
  • Kubernetes准入控制器:在资源创建前进行安全检查
  • 阿里云ECS CPU 100%排查:5分钟定位挖矿病毒的原生命令链
  • easysearch 安装