操作系统复习3 malloc如何分配内存

news2024/9/28 3:27:48

malloc分配内存

malloc是c语言的库函数,不支持重载

malloc的返回值是void*类型需要强制转换

malloc申请完的内存需要用free来进行释放内存

malloc申请空间失败会返回值为空

malloc申请的是虚拟内存地址,只有这块内存被访问时,才能发生映射,才会调用物理内存地址

malloc申请内存的方式

1. brk()

通过brk()系统调用从堆区申请内存空间

brk()是通过堆顶指针向高地址移动,进行空间申请

2. mmap

mmap()方式也称为私有匿名映射,也就是在文件映射区申请一块内存进行分配

3. 调用时机

当申请的内存小于128kb调用brk()

当申请的内存大于128kb调用mmap()

4. malloc申请的内存空间大小

申请的空间内存大小,并不是你说申请1字节空间,申请的就是1字节,malloc会分配更大的内存池

5. free释放内存

free释放掉的内存并不会返回给操作系统,而是返回给malloc的内存池,等下次申请堆区空间的时候可以直接将内存给过去,速度快很多直到进程结束才会将内存还给操作系统。

只有在mmap在文件映射区申请内存空间的时候才会返还给操作系统,但是这样有弊端,因为申请内存的过程要去内核空间申请,一次一次的访问内核空间,于是每次mmap 分配的虚拟地址都是缺页状态的,然后在第一次访问该虚拟地址的时候,就会触发缺页中断。
也就是说,频繁通过 mmap 分配的内存话,不仅每次都会发生运行态的切换,还会发生缺页中断,这样会导致 CPU消耗较大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2167675.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于quill2.0的富文本编辑器,Fluent Editor,支持表格,图片,表情等

官网&#xff1a;Fluent Editor | 基于 Quill 2.0 的富文本编辑器 安装 npm i opentiny/fluent-editor quill 使用案例 <template><div class"publish-form-container"><!-- TODO --><div ref"quillEditorRef" class"quill…

comfyui 工作流生成图片使用history接口获取返回时 outputs为空 问题请教,希望有大佬可以帮忙解答一下

comfyui github地址&#xff1a; GitHub - comfyanonymous/ComfyUI: The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface.The most powerful and modular diffusion model GUI, api and backend with a graph/nodes interface.…

flush cache line dirty bytes

结论&#xff1a; ARM :To mark these lines, each line of the cache has an associated dirty bit (or bits) 所以这个依赖硬件实现&#xff0c;可能只刷出dirty bytes of cache line to memory.有的硬件只有一个dirty bit&#xff0c;所以会刷出整条cache line x86没有找…

1--苍穹外卖-SpringBoot项目介绍及环境搭建 详解

目录 软件开发整体流程 软件开发流程 角色分工 软件环境 苍穹外卖项目介绍 项目介绍 产品原型 技术选型 开发环境搭建 前端环境搭建 后端环境搭建 完善登录功能 导入接口文档 Swagger 介绍 使用方式 常用注解 软件开发整体流程 软件开发流程 需求分析&#x…

Supabase 入门指南

Supabase 是一个开源替代品&#xff0c;用于 Firebase 提供的后端服务。它基于 PostgreSQL&#xff0c;提供实时数据库、身份验证、存储等功能。本文将深入探讨 Supabase 的主要功能&#xff0c;并结合不同场景给出代码实例。 1. 创建 Supabase 项目 首先&#xff0c;访问 S…

Cannon-es物理引擎中物体动力控制的深度探索

本文目录 前言1、cannon-es给物体施加力1.1 前置代码1.2 效果1.3 给小球施加力1. applyForce效果 2. applyImpulse效果 3. applyLocalImpulse效果 4. applyTorque效果 区别总结 前言 在三维物理引擎的世界里&#xff0c;Cannon-ES以其轻量级和高效能著称&#xff0c;为开发者提…

寿司检测系统源码分享

寿司检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

zabbix“专家坐诊”第257期问答

问题一 Q&#xff1a;zabbix5.0监控项里的键值&#xff0c;怎么设置变量值&#xff1f;{#ABC} {$ABC} 都识别不到变量。 A&#xff1a;可以参考一下这个。 问题二 Q&#xff1a;我想问一下用odbc创建监控项&#xff0c;生成了json格式&#xff0c;如何创建一个触发器去判断里面…

精准控制交易亏损:掌握关键止损点设置技巧

前段时间&#xff0c;咱们探讨了开仓的策略&#xff0c;那今天就需要来聊聊止损的技巧了。一个好的开始很重要&#xff0c;但知道何时止损也是同样关键。市场波动大&#xff0c;机会稍纵即逝。当趋势变得不明确时&#xff0c;止损可以帮助我们管理风险&#xff0c;防止损失加剧…

Spring Cloud Gateway 之动态uri 自定义过滤器

背景&#xff1a;第三方公司 请求本公司入参和出参一样的同一个接口&#xff0c;根据业务类型不一样需要不同业务微服务处理 &#xff0c;和第三方公司协商在请求头中加入业务类型方便我公司在网关成分发请求。 1&#xff1a;在spring cloud gateway yml 中加入路由 重点是 -…

STL——map和set【map和set的介绍和使用】【multimap和multiset】

目录 map和set1.关联式容器2.键值对3.树形结构的关联式容器3.1set3.1.1set的介绍3.1.2set的使用3.1.2.1set的模版参数列表3.1.2.2set的构造3.1.2.3set的迭代器3.1.2.4set基本接口的使用3.1.2.5set使用案例 3.2map3.2.1map介绍3.2.2map的使用3.2.2.1map的构造3.2.2.2map的迭代器…

一个必会算法模型,XGBoost !!

大家好&#xff0c;今天咱们来聊聊XGBoost ~ XGBoost&#xff08;Extreme Gradient Boosting&#xff09;是一种集成学习算法&#xff0c;是梯度提升树的一种改进。它通过结合多个弱学习器&#xff08;通常是决策树&#xff09;来构建一个强大的集成模型。 XGBoost 的核心原理…

数据结构练习题————(二叉树)——考前必备合集!

今天在牛客网和力扣上带来了数据结构中二叉树的进阶练习题 1.二叉搜索树与双向链表———二叉搜索树与双向链表_牛客题霸_牛客网 (nowcoder.com) 2.二叉树遍历————二叉树遍历_牛客题霸_牛客网 (nowcoder.com) 3.二叉树的层序遍历————102. 二叉树的层序遍历 - 力扣&am…

C# 一键清空控件值

_场景&#xff1a;_在任何一个Form表单的操作页面或者数据台账的查询页面&#xff0c;基本都会看到一个清除的按钮&#xff0c;其功能就是用来清除我们需要抛弃的已经写入到控件内的数据。如果一个个控件来处理的话&#xff0c;想必会非常麻烦&#xff0c;而且系统不单单只是一…

杭州算力小镇:AI泛化解锁新机遇,探寻AI Agent 迭代新路径

人工智能技术不断迭代&#xff0c;重点围绕着两个事情&#xff0c;一是数据&#xff0c;二是算力。 算法的迭代推动着AI朝向多模态的方向发展&#xff0c;使之能够灵活应对不同领域的不同任务&#xff0c;模型的任务执行能力大大提升&#xff0c;人工智能泛化能力被推上高潮。…

scala 2.12 error: value foreach is not a member of Object

如图所示&#xff1a;在scala 2.11的时候下面的不报错&#xff0c;但是在2.12下报错了 在scala2.12环境下错误如下&#xff1a; 经过查找资料得到&#xff1a;df 后面加上rdd 即可

kafka下载配置

下载安装 参开kafka社区 zookeeperkafka消息队列群集部署https://apache.csdn.net/66c958fb10164416336632c3.html 下载 kafka_2.12-3.2.0安装包快速下载地址分享 官网下载链接地址&#xff1a; 官网下载地址&#xff1a;https://kafka.apache.org/downloads 官网呢下载慢…

详细解读,F5服务器负载均衡的技术优势

在现代大规模、高流量的网络使用场景中&#xff0c;为应对高并发和海量数据的挑战&#xff0c;服务器负载均衡技术应运而生。但凡知道服务器负载均衡这一名词的&#xff0c;基本都对F5有所耳闻&#xff0c;因为负载均衡正是F5的代表作&#xff0c;换句通俗易懂的话来说&#xf…

需求: 通过后台生成的树形结构,返回给前台用于动态生成表格标题,并将对应标题下面的信息对应起来

1. 如图所以&#xff0c;完成以下内容对应 2. 代码示例如下&#xff0c; 动态生成树形结构列名称&#xff0c;并将表格中存在的值与其对应起来 /*** 查询资源计划列表** param resourcePlan 资源计划* return 资源计划*/Overridepublic Map<String, Object> selectResour…

程序编译的四个阶段

程序编译的四个阶段 #include <stdio.h>int main(){printf("Hello World~");return 0; } hello.c程序的生命周期从一个高级C语言程序开始&#xff0c;这种形式容易被人读懂。 但这无法直接被计算机读懂。为了在系统上运行hello.c程序&#xff0c;每条C语言都…