嵌入式学习15
标题C语言底层核心位运算详解 程序五大内存分区全梳理前言最近系统学习C语言底层知识点今天啃完两大重难点位运算和程序内存分区管理。位运算是嵌入式、驱动开发必备技能直接操作二进制比特位内存分区是理解程序运行、排查内存泄漏、段错误的根本。本文整理完整知识点、实操模板、踩坑易错点适合零基础巩固、面试复习。一、位运算直接操作二进制比特位1. 六种基础位运算符位运算仅支持整型数据char/short/int/long浮点数float、double无法参与运算。运算符运算规则典型场景 按位与对应bit全1才为1否则0指定位清零、提取特定位| 按位或对应bit有1则1全0才0将指定bit置1^ 按位异或对应bit相同为0不同为1翻转bit、交换两数无临时变量~ 按位取反所有bit 0↔1配合与运算清零特定位 左移整体左移N位低位补0快速乘以2的N次方 右移整体右移N位有符号补符号位快速除以2的N次方2. 工业级常用位操作模板1将数字第n位设置为1// n为目标bit下标从0开始计数num|(1n);2将数字第n位清零num~(1n);3异或交换两个整数无需临时变量voidswap(int*a,int*b){*a*a^*b;*b*a^*b;*a*a^*b;}3. 高频注意事项易错坑区分逻辑运算符与位运算符 ||是逻辑运算结果只有0/1 | ^是位运算操作二进制每一位完全不能混用。移位运算优先级低于加减1 3 1等价(13) 1 8不是1 (31)7复杂运算建议加括号。有符号数右移补符号位负数右移永远为负数无符号数字右移统一补0移位溢出会丢失数据避免超大移位。~取反容易踩坑~1结果不是0而是所有bit翻转的负数计算机用补码存储负数不能直接用~num判断正负。二、 C程序内存分区管理Linux环境1. 五大内存分区完整图解程序运行时内存从低地址到高地址分为文本段、数据区、栈区、堆区、CPU寄存器。.text 文本段只读存放所有函数代码、程序指令权限只读修改会直接段错误生命周期全程伴随程序。数据区编译阶段分配程序结束释放.data已初始化全局变量、static静态变量.bss未初始化全局/static变量程序加载时自动填充0.rodata字符串常量、const只读常量禁止写操作。栈区 stack操作系统自动管理存放局部变量、函数形参、函数返回地址进入函数分配函数执行完毕自动回收。坑局部变量不初始化值为随机脏数据栈空间很小禁止超大数组。堆区 heap程序员手动管理唯一自主控制生命周期的内存通过malloc/calloc/realloc申请free手动释放。忘记释放 → 内存泄漏程序长时间运行内存占用持续上涨重复free、free栈变量/全局变量 → 程序崩溃。寄存器 registerCPU高速存储单元register修饰的变量优先存入寄存器读写速度远超内存。2. 堆区动态内存核心API#includestdlib.h// 申请size字节堆内存返回void*未初始化void*malloc(size_tsize);// 申请count个size空间自动初始化为0void*calloc(size_tcount,size_tsize);// 扩容/缩容已有堆内存void*realloc(void*ptr,size_tnew_size);// 释放堆内存voidfree(void*ptr);规范写法free后手动置空杜绝野指针int*pmalloc(40);free(p);pNULL;// 释放后置空避免野指针3. 共用体union与大小端存储union特点所有成员共享同一块内存空间大小等于最大成员占用字节大小端模式小端PC、ARM主流低内存地址存放数据低位大端网络协议低内存地址存放数据高位可通过union快速判断当前设备存储模式。4. 内存模块易错点汇总函数绝对不能返回局部变量地址局部变量存栈函数结束栈销毁指针变为野指针hello字符串常量存.rodata只读段不能修改字符char *s abc; s[0]x;直接崩溃static修饰局部变量存储在数据区仅第一次调用函数初始化普通局部变量每次进函数重建栈空间有限大容量数组、缓冲区统一放堆堆内存只能free一次重复free、释放非malloc指针直接触发段错误数组越界读写会破坏相邻内存产生无规律随机bug极难调试。三、今日学习总结位运算偏向底层硬件开发熟记置1、清零、异或交换三大模板区分位运算与逻辑运算内存分区是C语言排错核心分清栈/堆/数据区存放数据类型牢记堆内存malloc/free配对使用高频踩坑野指针、内存泄漏、栈溢出、修改只读字符串、返回局部变量地址拓展方向后续结合指针、结构体、动态数组实战堆内存管理实现动态链表。

相关新闻

深入解析MOS晶体管漏电流:6大成因与芯片功耗控制

深入解析MOS晶体管漏电流:6大成因与芯片功耗控制

1. MOS晶体管漏电流的本质与影响在半导体设计和芯片制造领域,MOS晶体管的漏电流是一个老生常谈却又至关重要的话题。它不像饱和电流那样直接决定了电路的驱动能力,也不像阈值电压那样定义了逻辑状态切换的门槛,但它却像一个无处不在的“幽灵”…

2026/10/8 12:06:41 阅读更多 →
程序员必备在线工具箱:Cron表达式、加解密、JSON与AI工具实战指南

程序员必备在线工具箱:Cron表达式、加解密、JSON与AI工具实战指南

1. 项目概述:为什么新人程序员需要这些在线工具?刚入行的程序员,手里攥着几门编程语言,脑子里装着数据结构和算法,但真到了实际开发或排查问题时,常常会卡在一些“非核心”但极其关键的环节上。比如&#x…

2026/10/14 17:54:50 阅读更多 →
UE4多人联机开发:从零构建可搜索房间的完整指南

UE4多人联机开发:从零构建可搜索房间的完整指南

1. 项目概述与核心价值最近几年,独立游戏和中小团队项目里,多人联机玩法越来越常见。很多朋友在学UE4的时候,单机部分玩得挺溜,一到联机就卡壳,感觉像隔着一堵墙。网上的资料要么太零散,要么版本老旧&#…

2026/10/15 17:09:01 阅读更多 →

最新新闻

全志T507硬件启动失败的5大行为逻辑陷阱

全志T507硬件启动失败的5大行为逻辑陷阱

简介:本资源为全志T507智能座舱处理器官方数据手册(Datasheet)V1.4完整版PDF,面向车载电子系统工程师、嵌入式软硬件开发者及芯片应用方案设计人员,用于开展T507平台选型评估、硬件设计、驱动开发与合规性验证。文档涵…

2026/10/15 22:34:58 阅读更多 →
百万级WebSocket实时推送架构:Redis Cluster会话状态管理实践

百万级WebSocket实时推送架构:Redis Cluster会话状态管理实践

先说结论:这个项目做完之后,我最大的感受就是——WebSocket本身不复杂,复杂的是把“连接”和“状态”这两件事放进分布式架构里,还要在百万级连接的压力下不翻车。省钱返利小助手这类业务,看着是一个聊天/客服工具&…

2026/10/15 22:34:58 阅读更多 →
Python接口自动化测试中的Token状态管理与复用实战

Python接口自动化测试中的Token状态管理与复用实战

简介:本资源是一份面向接口自动化测试初学者与功能测试转岗人员的实战型技术文档,聚焦解决Token鉴权场景下的核心难点——如何稳定获取并复用token完成后续接口链路调用。内容基于真实停车场管理平台API(ecapi.parkingwang.com)展…

2026/10/15 22:34:58 阅读更多 →
AI视频生成门槛再降?Q4预览版实测:从能生成到能叙事

AI视频生成门槛再降?Q4预览版实测:从能生成到能叙事

AI视频生成这个赛道的迭代速度,快得有点让人喘不过气。前几天我还在跟朋友讨论某个开源模型的运镜效果,结果转头就看到某国产视觉大模型团队放出了第四代模型的预览版。名字里带个Q4,听起来像季度版本,但实际体验下来,…

2026/10/15 22:34:58 阅读更多 →
流水作业调度不求人:从状态压缩DP到Johnson规则的完整实践指南

流水作业调度不求人:从状态压缩DP到Johnson规则的完整实践指南

流水作业调度,这个名字听起来像是车间主任才会头疼的事情,但做生产计划、供应链管理,或者研究算法的人都绕不开它。很多教材把它放在“动态规划”章节,导致不少初学者以为流水作业调度只能拿DP硬啃,其实这个问题的核心…

2026/10/15 22:34:58 阅读更多 →
本地AI自迭代实战:元提示工程与轻量微调闭环

本地AI自迭代实战:元提示工程与轻量微调闭环

1. 这不是科幻预告片,而是我上周调试的本地实验环境“当AI开始造AI”这个标题一出来,很多人第一反应是科幻电影开场——镜头缓缓推进某个泛着蓝光的量子服务器阵列,AI在虚拟空间里拆解自己、重写权重、生成更优的子模型……但实话讲&#xff…

2026/10/15 22:33:56 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →