C语言程序的内存地址分配
当一个C程序被编译为可执行程序我们运行这个可执行程序时系统会为这个程序分配一个虚拟内存以下就是其分配详情不同的操作系统分的内存大小可能不同但是顺序都是一样的只不过每个区域的大小不一高地址 ┌─────────────────────┐ 0xFFFFFFFF│ 内核空间 │ 操作系统占用用户程序无法访问│ 1GB供内核使用 │├─────────────────────┤ 0xC00000003GB 边界│ ││ 栈区 ↓ │ ← 向下增长从高地址向低地址│ 局部变量、形参 │├─────────────────────┤│ ││ 空洞 │ ← 栈和堆之间的大片空闲区域│ 可动态调整 ││ │├─────────────────────┤│ 堆区 ↑ │ ← 向上增长从低地址向高地址│ malloc/calloc 分配│├─────────────────────┤│ .bss段 │ ←未初始化的全局/静态变量默认值为0│ │├─────────────────────┤│ .data段 │ ←已初始化的全局/静态变量有初始值│ │├─────────────────────┤│ .rodata段 │ ←只读数据字符串常量、const 修饰的变量│ │├─────────────────────┤│ .text段 │ ← 代码段程序的机器指令只读│ 程序指令/机器码 ││ │低地址 └─────────────────────┘ 0x08048000Linux 默认加载地址1. 代码段.text只读存放内容程序的机器指令CPU 执行的二进制代码权限只读防止程序意外修改自己的指令生命周期程序启动到结束一直存在举例你写的printf(hello);编译后就在这里// 函数体编译后存放在 .text 段void func() {int a 10; // 函数指令在这里但变量 a 在栈上}2. 只读数据段.rodata常量区存放内容字符串常量、const修饰的全局变量权限只读修改会导致段错误生命周期程序启动到结束一直存在‘char *str hello; // hello 存放在 .rodata 段const int num 100; // num 存放在 .rodata 段全局 const3. 数据段.data已初始化数据段存放内容已经初始化的全局变量、静态变量初始值不为 0权限可读写生命周期程序启动到结束一直存在int global 100; // 存放在 .data 段static int count 5; // 存放在 .data 段4. BSS 段.bss未初始化数据段存放内容未初始化的全局变量、静态变量默认值为 0权限可读写生命周期程序启动到结束一直存在特性程序加载时操作系统会把 BSS 段全部清零int global2; // 存放在 .bss 段默认值为 0static int count2; // 存放在 .bss 段默认值为 05. 堆区Heap动态分配存放内容malloc、calloc、realloc分配的内存特点手动分配和释放mallocfree从低地址向高地址增长sbrk/mmap空间较大但分配速度比栈慢如果不释放会造成内存泄漏int *p malloc(100 * sizeof(int)); // 在堆上分配 400 字节// ... 使用 ...free(p); // 手动释放6. 栈区Stack函数调用存放内容局部变量、形参、函数返回值、函数调用信息栈帧特点自动分配和释放函数调用时压栈返回时弹栈从高地址向低地址增长向下增长空间有限通常默认 8MB超出会栈溢出分配速度极快移动栈指针即可void func(int a, int b) { // a 和 b 在栈上int x 10; // x 在栈上char str[100]; // str 在栈上} // 函数返回后x、str、a、b 全部被自动回收

相关新闻

StarRocks 3.1.1 深度优化:GROUP BY 非聚合字段查询提速落地方案

StarRocks 3.1.1 深度优化:GROUP BY 非聚合字段查询提速落地方案

一、业务痛点 & 适用场景 在实时数仓建设、用户画像分析、交易数据统计的一线开发场景中,有一个需求高频且棘手:基于用户维度聚合统计交易总金额,同时精准保留每个用户最新一笔交易的明细维度信息。 简单来说就是:既要聚合汇总…

2026/7/21 6:36:36 阅读更多 →
数字电路设计核心:逻辑门与时序电路实战解析

数字电路设计核心:逻辑门与时序电路实战解析

1. 数字电子技术基础回顾 在开始深入探讨之前,我们先快速梳理一下数字电子技术的几个核心概念。数字电路与模拟电路最大的区别在于信号处理方式——数字电路处理的是离散的0和1信号,而模拟电路处理的是连续变化的信号。这种特性使得数字系统具有抗干扰能…

2026/7/21 6:35:35 阅读更多 →
开源脚手架!一款 SpringBoot 低代码快速开发平台!

开源脚手架!一款 SpringBoot 低代码快速开发平台!

大家好,我是 Java陈序员。 作为独立开发者,搭建系统时,80% 的时间都耗费在重复编写登录、权限、CRUD、数据加密这些基础功能上,真正留给核心业务的时间少之又少,这种模式的开发效率十分低下。 今天,给大家介…

2026/7/21 6:35:35 阅读更多 →

最新新闻

libsm64测试程序解析:SDL+OpenGL渲染器的实现细节

libsm64测试程序解析:SDL+OpenGL渲染器的实现细节

libsm64测试程序解析:SDLOpenGL渲染器的实现细节 【免费下载链接】libsm64 Mario 64 as a library for use in external game engines 项目地址: https://gitcode.com/gh_mirrors/li/libsm64 欢迎来到libsm64测试程序的深度解析!🎮 作…

2026/7/21 15:45:43 阅读更多 →
MobileCLIP实战指南:构建高效图像-文本模型的完整解决方案

MobileCLIP实战指南:构建高效图像-文本模型的完整解决方案

MobileCLIP实战指南:构建高效图像-文本模型的完整解决方案 【免费下载链接】ml-mobileclip This repository contains the official implementation of the research papers, "MobileCLIP" CVPR 2024 and "MobileCLIP2" TMLR August 2025 项目…

2026/7/21 15:45:43 阅读更多 →
嵌入式PRCM模块深度解析:时钟与功耗管理实战指南

嵌入式PRCM模块深度解析:时钟与功耗管理实战指南

1. 从寄存器手册到实战:PRCM模块的深度解析与避坑指南在嵌入式开发领域,尤其是基于德州仪器(TI)处理器平台的项目中,电源、复位和时钟管理模块,也就是我们常说的PRCM,是决定系统稳定性、性能和功…

2026/7/21 15:45:43 阅读更多 →
TradingAgents-CN多智能体金融交易框架部署配置与性能优化完全指南

TradingAgents-CN多智能体金融交易框架部署配置与性能优化完全指南

TradingAgents-CN多智能体金融交易框架部署配置与性能优化完全指南 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN TradingAgents-CN是基于多智能…

2026/7/21 15:45:43 阅读更多 →
IOPaint完整指南:3分钟掌握AI图片修复终极神器

IOPaint完整指南:3分钟掌握AI图片修复终极神器

IOPaint完整指南:3分钟掌握AI图片修复终极神器 【免费下载链接】IOPaint Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) any thing on your…

2026/7/21 15:45:43 阅读更多 →
开源六轴机械臂:3D打印摆线减速器如何重塑机器人产业价值链

开源六轴机械臂:3D打印摆线减速器如何重塑机器人产业价值链

开源六轴机械臂:3D打印摆线减速器如何重塑机器人产业价值链 【免费下载链接】Faze4-Robotic-arm All files for 6 axis robot arm with cycloidal gearboxes . 项目地址: https://gitcode.com/gh_mirrors/fa/Faze4-Robotic-arm 在工业自动化成本居高不下、技…

2026/7/21 15:44:43 阅读更多 →

日新闻

Octane Render与C4D汉化版安装与优化指南

Octane Render与C4D汉化版安装与优化指南

1. Octane Render与C4D的黄金组合:为什么选择这个方案?在三维创作领域,渲染器的选择往往决定了作品的最终呈现质量和工作效率。作为Cinema 4D(C4D)用户,Octane Render的GPU加速特性与实时预览功能&#xff…

2026/7/21 0:00:19 阅读更多 →
GPMC接口设计:异步/同步模式与多路复用配置实战

GPMC接口设计:异步/同步模式与多路复用配置实战

1. GPMC接口设计:从硬件连接到软件配置的全局视角在嵌入式系统开发中,尤其是基于TI Sitara系列如AM263x这类高性能微控制器的项目里,外部存储器的扩展几乎是绕不开的一环。无论是存放大量非易失性代码的NOR Flash,还是作为高速数据…

2026/7/21 0:00:19 阅读更多 →
UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

UE5 GAS框架下RPG被动技能系统:从核心原理到实战实现

1. 项目概述:UE5 GAS RPG被动技能的核心价值在UE5里用GAS(Gameplay Ability System)做RPG游戏,主动技能像是你手里的武器,按一下打一下,逻辑直接,反馈也快。但被动技能,它更像是你身…

2026/7/21 0:00:19 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/21 8:48:31 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/21 5:34:47 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/21 8:25:39 阅读更多 →

月新闻