c语言 第八章:内存管理、位运算

发布时间:2026/10/13 11:17:03

c语言 第八章:内存管理、位运算 1.操作系统内存管理①内存分布②堆和栈的区别栈区1. 栈区用来保存局部变量、函数的形参返回值、及函数调用时的保护现场2.栈区由操作系统自动管理3.栈区默认大小为8M 比堆区空间小4.栈的访问效率要比堆的访问效率高堆区1.堆区由开发人员手动申请和释放使用完时及时释放否则造成内存泄露。2.堆区空间比栈空间大访问效率相对较低。③堆区空间使用场景在函数中开辟的空间希望随着函数结束该空间任然存在可以去堆上开辟。当需要的空间比较大时可以去堆上开辟栈区空间有限默认8M。堆区空间使用动态内存分配void *malloc(size_t size);功能向堆区申请内存空间参数size申请的空间字节数返回值成功返回申请到的空间首地址失败NULLvoid free(void *ptr);功能释放申请的堆区空间参数ptr申请到的堆区的空间首地址。void *calloc(size_t nmemb, size_t size);功能向堆区申请数组空间并清空成0参数nmemb申请的数组的元素个数size数组中的每个元素占的字节数返回值成功返回申请到的空间首地址失败NULL内存泄露程序运行过程中堆区申请的空间在使用完没有释放则造成内存泄露。避免内存泄露堆区申请的空间使用完及时使用free()进行释放。动态数组int *pa malloc(ARRAY_LEN*sizeof(int));if (NULL pa){printf(malloc error\n);return 0;}for (int i 0; i ARRAY_LEN; i){pa[i] i;}for (int i 0; i ARRAY_LEN; i){printf(%d , pa[i]);}printf(\n);2.位运算①位运算基础按位与 全1为1有0则0|按位或 有1则1全0为0^按位异或 相同为0相异为1~按位取反1取反为00取反为1按位左移 按位左移低位补0 num n num * 2^n按位右移 按位右移动有符号数高位补符号位无符号数高位补0num n num / 2^n9 60000 0000 0000 0000 0000 0000 0000 1001 0000 0000 0000 0000 0000 0000 0000 01100000 0000 0000 0000 0000 0000 0000 00009 | 60000 0000 0000 0000 0000 0000 0000 1001 |0000 0000 0000 0000 0000 0000 0000 01100000 0000 0000 0000 0000 0000 0000 11119 ^ 60000 0000 0000 0000 0000 0000 0000 1001 ^0000 0000 0000 0000 0000 0000 0000 01100000 0000 0000 0000 0000 0000 0000 1111~9~0000 0000 0000 0000 0000 0000 0000 10011111 1111 1111 1111 1111 1111 1111 01109 30000 0000 0000 0000 0000 0000 0000 1001 30000 0000 0000 0000 0000 0000 0100 10009 30000 0000 0000 0000 0000 0000 0000 1001 30000 0000 0000 0000 0000 0000 0000 0001②位运算的使用a.指定n位置10000 0000--》0000 10000000 0001 30000 10001010 0000 |0000 10001010 1000num num | 1 n;1010 0001 | 0000 0001 60100 00001110 0001b.指定第n位清01010 1010 ~(1 3)1111 01111010 00101111 0111 ~0000 1000 ~(1 3)num num ~1 n;0011 1100 1010 1010 ~(1 10) ~(1 11)1111 1011 1111 11110011 1000 1010 10101111 0111 1111 11110011 0000 1010 10100000 0100 0000 00001111 1011 1111 1111c.两数交换(不使用中间变量)方法一位运算无中间变量a a ^ b;b a ^ b;a a ^ b;》a ^ a 0a ^ 0 ab (a ^ b) ^ b a ^ b ^ b a ^ (b ^ b) a ^ 0 a;a a ^ b a ^ b ^ a 0 ^ b b;方法二有中间变量int tmp 0;tmp a;a b;b tmp;方法三求和方式无中间变量a a b;b a - b; a b -b aa a - b; a b - b a b - a位运算符的优先级~大于 大于大于^大于|
延伸阅读

更多相关文章

2026/10/12 6:39:52

基于Transformer的金融时序预测与资产配置Token生成框架实践

这次我们来看一个将金融数值预测与资产配置任务转化为“Token生成”问题的开源项目。项目标题“Financial Numerical Prediction and Allocation as Token Generation”直指其核心思路:它不再将股票价格预测或ETF组合构建视为传统的回归或优化问题,而是将…

2026/10/11 15:12:05

深入解析Linux开机启动流程:从固件到systemd的完整指南

1. 项目概述:为什么开机流程值得深挖“Linux开机启动流程有一这篇就够啦!!!”——这个标题背后,是无数运维工程师、系统管理员乃至开发者都曾经历过的困惑时刻。系统启动不起来,屏幕上一串串滚动的日志让人…

2026/10/12 11:00:30

从FP6277看智能养生硬件:高效升压芯片如何优化艾灸盒性能?

近年来,随着健康消费的升级,便携式智能艾灸盒凭借“小巧便携、精准控温、安全易用”的特点,迅速成为小红书、抖音等平台的爆款单品。从职场白领到宝妈群体,用户对其需求已从“功能性”转向“体验感”——既要能塞进口袋随身携带&a…

2026/10/13 15:12:14

SpringBoot外卖系统源码拆解:从订单状态机到并发扣库存

简介:这套基于Spring Boot构建的外卖系统源码,面向Java Web初学者、毕业设计及课程大作业开发人群,覆盖用户注册登录、商家入驻、商品发布、订单管理、支付对接等核心业务,帮助理解真实项目的分层架构与前后端分离开发流程。压缩包…

2026/10/13 15:12:14

足球比分模板选型与高并发实战:轮询、推送与避坑指南

简介:这是一套面向足球资讯站搭建者与前端学习者的完整比分网站模板集合,围绕赛事比分展示、数据分析与球迷互动等场景,提供可直接套用的页面方案,适合具备一定ASP与前端基础、希望快速搭建足球门户的开发者参考。压缩包共249个文…

2026/10/13 15:12:14

RAR压缩包里的太阳系模拟:技术栈识别、编译与调试全指南

简介:这是一份基于Unity3D开发的个人太阳系模拟项目完整工程包,面向Unity初学者、游戏开发爱好者及天文科普教育场景,帮助读者理解场景搭建、天体运动模拟与交互控制的核心流程。资源共2522个文件,压缩包约77.65MB,其中…

2026/10/13 15:12:13

C# EmguCV摄像头首帧黑屏问题排查与稳定采集方案

简介:本资源是一份面向C#初学者与计算机视觉入门开发者的实战项目包,聚焦于使用EmguCV库调用本地摄像头并完成图像采集与基础处理。内容覆盖Capture对象初始化、帧捕获、Bitmap转换、灰度化等核心流程,适用于Windows Forms桌面应用开发场景&a…

2026/10/13 15:12:13

pyTEP实战:Python中构建Tennessee Eastman流程仿真与故障诊断

简介:pyTEP 是面向过程控制、化工仿真与机器学习研究者的开源 Python 仿真 API,用于田纳西伊士曼(Tennessee Eastman)流程的交互式模拟。它通过高级接口简化复杂工况的设置,让用户无需深入理解模拟器底层原理&#xff…

2026/10/13 15:07:12

小身材,大能量!

可穿戴 PPG 心率检测设计:低功耗、佩戴识别与光路隔离要点在做智能手表、运动手环等可穿戴设备时,心率检测看起来只是“加一颗传感器”,但实际落地会遇到很多工程问题:功耗、佩戴状态、光路串扰、不同肤色和佩戴松紧、环境光、运动…

2026/10/13 5:19:27

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/12 12:01:26

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/12 12:54:07

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/13 0:04:41

基于Triton部署YOLO目标检测:从训练脚本到线上服务

简介:这份资源面向希望将目标检测模型落地到生产环境的深度学习开发者与算法工程师,聚焦于用 Triton Inference Server 部署 YOLOv9 的完整实战方案,解决从训练权重到线上推理服务之间的工程化难题。压缩包共 16 个文件,约 886KB&…

2026/10/13 0:04:41

手把手教你云端部署Qwen-Image-2.1:从GPU选型到在线文生图服务

Qwen-Image-2.1 这个开源的图像生成模型,最近在内容创作和 AI 应用圈子里热度相当高。它属于通义 Qwen 系列里的视觉生成分支,让我眼前一亮的是它对中文长文本的理解能力——以前用那些老方案生成带中文文字的图,十个里九个是“乱码印刷体”&…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑