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

关于C/C++,Linux/MacOS/Windows 平台虚拟内存分配

在 Windows 平台上面建议通过 VirtualAlloca、VirtualAllocaEx 核心库函数来分配虚拟内存,而不是通过 MMF(Memory Mapping File / 内存映射文件)技术来载入虚拟内存。

这是因为,在 Windows 平台上面,通过MMF技术分配的虚拟内存,若程式运行过程中没有手动调用 FlushViewOfFile 刷入内存映射文件改变函数,就会导致程序在退出的时候,由于分配的虚拟内存过大涉及改动的虚拟内存页过多,这个时候内核就会挂住进程,以完成改变内存同步到文件的动作。

1、写入磁盘IO占用过大

2、程序一直无法退出(内核挂起进程)

MacOS 上面不建议使用匿名共享内存来分配虚拟内存,注意:并非不可用,单纯只是有OS X系统版本API兼容限制。

基于 boost 基础框架类库之中提供的:

<boost/interprocess/shared_memory_object.hpp> 

<boost/interprocess/mapped_region.hpp>

库头文件,大家可以轻松实现 MacOS、Windows、Linux 跨平台兼容性的匿名共享内存分配(:它们需要被映射,属于虚拟内存的一种)。

但上面也提到 MacOS 会有版本兼容限制,所以 Linux、MacOS,若希望统一虚拟内存访问的源实现,那么采用 MMF(内存映射文件)是一个很好的解决方案。

在大多数这两个平台上面需要分配虚拟内存的应用程序,都首选该方法,但可惜的是,这会占用一定的磁盘空间,但这个可以被缓解,即当文件被映射到内存之后,立即调用 unlink 函数删除被映射的文件,即可。

在 Windows 早前版本是无法删除正在被映射的文件的,但是在 Windows 11 及以上平台是允许删除正在映射过程之中的文件的,此时通过 PC Hunter、ProcExp 等系统工具,可以检索到进程内存映射的文件变成匿名文件。

相关文章:

关于C/C++,Linux/MacOS/Windows 平台虚拟内存分配

在 Windows 平台上面建议通过 VirtualAlloca、VirtualAllocaEx 核心库函数来分配虚拟内存&#xff0c;而不是通过 MMF&#xff08;Memory Mapping File / 内存映射文件&#xff09;技术来载入虚拟内存。 这是因为&#xff0c;在 Windows 平台上面&#xff0c;通过MMF技术分配的…...

如何在服务器上传/下载文件

从服务器下载文件到本地 打开xshell&#xff0c;输入&#xff1a;ssh root159.xxx.xxx.xx 然后需要输入密码 cd到目录文件夹下 cd /enmotech apt install zip zip -r uploads.zip uploads apt install lrzsz sz uploads.zip 从本地上传文件到服务器 如果文件是放在E盘…...

C++ 之多态虚函数原理及应用

文章目录 多态基本概念和原理虚函数的基本原理和概念虚析构和纯虚析构多重继承中的虚函数小结 多态基本概念和原理 多态的基本概念 **多态是C面向对象三大特性之一** 多态的定义 多态是一种面向对象编程概念&#xff0c;指同一个行为&#xff08;方法&#xff09;在不同的对象上…...

亮数据——让你的IP走出去,让价值返回来

亮数据——让你的IP走出去&#xff0c;让价值返回来 前言跨境电商最最最大的痛点——让IP走出去超级代理服务器加速网络免费的代理管理软件亮数据解决痛点亮数据优势介绍亮数据浏览器的使用示例总结 前言 当前社会信息的价值是不可想象的&#xff0c;今天在亮数据中看到了个【…...

spring boot-引入Redis并封装redistemplate操作工具类

文章目录 一、关于spring-redis二、springboot引入Redis及其使用案例三、封装redistemplate操作工具类 一、关于spring-redis spring-data-redis针对jedis提供了如下功能&#xff1a; 连接池自动管理&#xff0c;提供了一个高度封装的“RedisTemplate”类 针对jedis客户端中大…...

android 11 SystemUI 状态栏打开之后的界面层级关系说明之一

比如WiFi 图标的父layout为&#xff1a; Class Name: ButtonRelativeLayout Class Name: QSTileView Class Name: TilePage Class Name: PagedTileLayout Class Name: QSPanel Class Name: NonInterceptingScrollView Class Name: QSContainerImpl Class Name: FrameLayout Cl…...

C#___锁(lock)

lock是一种语言级别的关键字&#xff0c;用于实现线程同步和互斥。它提供了一种简单的方式来确保多个线程不会同时访问共享资源&#xff0c;从而避免竞争条件和数据不一致的问题。 作用&#xff1a; 1、避免并行运算中&#xff0c;共享数据的的读写安全问题&#xff1b; 2、并…...

JAVA的sort用法详解(二维数组排序,List<>排序,lambada表达式,自定义类型排序)

目录 前言&#xff1a; 一维数组降序&#xff1a; 方法1.Comparator接口&#xff1a; 代码实现&#xff1a; 方法2.Collections.reverseOrder()&#xff1a; 代码实现&#xff1a; 二维数组排序&#xff1a; 代码如下&#xff1a; List<>排序&#xff1a; 代码…...

数据分析能力模型分析与展示

具体内容&#xff1a; 专业素质 专业素质-01 数据处理 能力定义•能通过各种数据处理工具及数据处理方法&#xff0c;对内外部海量数据进行清洗和运用&#xff0c;提供统一数据标准&#xff0c;为业务分析做好数据支持工作。 L1•掌握一…...

BUG未解之谜01-指针引用之谜

在leetcode里面刷题出现的问题&#xff0c;当我在sortedArrayToBST里面给root赋予初始值NULL之后&#xff0c;问题得到解决&#xff01; 理论上root是未初始化的变量&#xff0c;然后我进入insert函数之后&#xff0c;root引用的内容也是未知值&#xff0c;因此无法给原来的二叉…...

数据库事务编程

事务是一个不可分割的数据库操作序列&#xff0c;也是数据库并发控制的基本单位&#xff0c;其执行的结果必须使数据库从一种一致性状态到另一种一致性状态。事务是逻辑上的一组操作&#xff0c;要么都执行&#xff0c;要么都不执行。 事务的 4 大特性 ACID 原子性 Atomicit…...

专题二_滑动窗口(1)

目录 209. 长度最小的子数组 解析 题解 3. 无重复字符的最长子串 解析 题解 1004. 最大连续1的个数 III 解析 题解 209. 长度最小的子数组 209. 长度最小的子数组 - 力扣&#xff08;LeetCode&#xff09; 解析 题解 class Solution { public:int minSubArrayLen(int…...

把本地文件上传到HDFS上操作步骤

因为条件有限&#xff0c;我这里以虚拟机centos为例 实验条件&#xff1a;我在虚拟机上创建了三台节点&#xff0c;部署了hadoop&#xff0c;把笔记本上的数据上传到hdfs中 数据打包上传到虚拟机节点上 采用的是rz命令&#xff0c;可以帮我们上传数据 没有的话可以使用命令安装…...

Leo赠书活动-21期 《一篇讲明白 Hadoop 生态的三大部件》

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 赠书活动专栏 ✨特色专栏&#xff1a;…...

【Redis】Redis 介绍Redis 为什么这么快?Redis数据结构Redis 和Memcache区别 ?为何Redis单线程效率也高?

目录 Redis 介绍 Redis 为什么这么快&#xff1f; Redis数据结构 Redis 和Memcache区别 &#xff1f; 为何Redis单线程效率也高&#xff1f; Redis 介绍 Redis 是一个开源&#xff08;BSD 许可&#xff09;、基于内存、支持多种数据结构的存储系统&#xff0c;可以作为数据…...

ArrayList和LinkedList有什么区别?

ArrayList和LinkedList的区别 ArrayList 和 LinkedList 是 Java 中常用的两种集合类&#xff0c;它们都实现了 List 接口&#xff0c;但在内部实现和性能上有一些区别。 内部实现&#xff1a; ArrayList 使用数组实现&#xff0c;它的元素在内存中是连续存储的&#xff0c;每…...

离线数仓(八)【DWD 层开发】

前言 1、DWD 层开发 DWD层设计要点&#xff1a; &#xff08;1&#xff09;DWD层的设计依据是维度建模理论&#xff08;主体是事务型事实表&#xff08;选择业务过程 -> 声明粒度 -> 确定维度 -> 确定事实&#xff09;&#xff0c;另外两种周期型快照事实表和累积型…...

Jenkins用户角色权限管理

Jenkins作为一款强大的自动化构建与持续集成工具&#xff0c;用户角色权限管理是其功能体系中不可或缺的一环。有效的权限管理能确保项目的安全稳定&#xff0c;避免敏感信息泄露。 1、安装插件&#xff1a;Role-based Authorization Strategy 系统管理 > 插件管理 > 可…...

简明conan教程

简明conan教程 1 关于conan1.1 来源1.2 作用 2 安装conan2.1 ubuntu2.1.1 安装python32.1.2 安装conan 2.2 Windows2.2.1 安装python32.2.2 安装conan 2.3 验证conan是否成功2.4 命令解释2.4.1 Consumer commands2.4.2 Creator commands2.4.3 Package development commands2.4.…...

LeetCode刷题--- 等差数列划分 II - 子序列

个人主页&#xff1a;元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构 ​​​http://t.csdnimg.cn/hKh2l 前言&#xff1a;这个专栏主要讲述动态规划算…...

AI写论文不再难,4款AI论文生成工具带你开启高效写作之旅!

在2025年愈演愈烈的学术写作智能化趋势中&#xff0c;越来越多的人选择借助AI写论文工具。现实中许多这样的工具在撰写硕士、博士论文等长篇学术作品时&#xff0c;常常缺乏必要的理论深度&#xff0c;逻辑也显得比较松散。普通的AI论文写作工具显然无法满足这些专业写作的需求…...

软件信创方案(Word)

第1章 需求分析1.1 核心项目需求自主可控、资源池、云平台建设、运维运营管理、安全系统五大核心需求第2章 云平台基础设施设计2.1 改造目标与定位2.2 设计原则2.3 总体架构设计含网络架构、云平台整体架构2.4 资源配置设计含网络、计算、数据库、存储资源池及云管模块设计第3章…...

Go代码越容易被AI写,Go工程师越值钱

Go代码越容易被AI写&#xff0c;Go工程师越值钱。 这句话听起来矛盾&#xff0c;但它是这个系列的终极结论。 前提是——你的价值不在"写代码"。 这是「AI工程时代三部曲」的收官篇。第一篇我们聊了Agent框架设计为什么比模型选型更重要&#xff0c;第二篇聊了技术债…...

pyNastran:破解工程仿真困境的Python技术革新者

pyNastran&#xff1a;破解工程仿真困境的Python技术革新者 【免费下载链接】pyNastran A Python-based interface tool for Nastrans file formats 项目地址: https://gitcode.com/gh_mirrors/py/pyNastran 揭示行业痛点&#xff1a;有限元分析的三大核心挑战 现代工程…...

PHP 反序列化漏洞深度解析:从原理利用到 allowed_classes 防御实战

PHP 反序列化漏洞深度解析&#xff1a;从原理利用到 allowed_classes 防御实战在 PHP 安全领域&#xff0c;反序列化漏洞&#xff08;Deserialization Vulnerability&#xff09; 长期占据高危漏洞的榜首。它允许攻击者在服务器上执行任意代码、删除文件、甚至获取服务器最高权…...

Unity Enter Play Mode Settings 搭配手动Reload全攻略:既保速度又保数据安全

Unity开发效率革命&#xff1a;Enter Play Mode Settings与智能Reload的黄金组合 在Unity项目开发的中后期&#xff0c;随着代码量膨胀和资源规模增长&#xff0c;每次按下Play按钮后的等待时间逐渐成为效率杀手。传统工作流中&#xff0c;脚本修改后的自动Reload机制像一把双刃…...

5个创新方法:基于开源工具的内容访问优化方案

5个创新方法&#xff1a;基于开源工具的内容访问优化方案 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 在信息爆炸的数字时代&#xff0c;合法访问优质内容成为信息获取的关键挑战。…...

GitHub贡献统计性能优化终极指南:5个关键技巧提升Streak Stats响应速度

GitHub贡献统计性能优化终极指南&#xff1a;5个关键技巧提升Streak Stats响应速度 【免费下载链接】github-readme-streak-stats &#x1f525; Stay motivated and show off your contribution streak! &#x1f31f; Display your total contributions, current streak, and…...

30分钟快速搭建企业级工作流系统:RuoYi-Flowable-Plus完整指南

30分钟快速搭建企业级工作流系统&#xff1a;RuoYi-Flowable-Plus完整指南 【免费下载链接】RuoYi-Flowable-Plus 本项目基于 RuoYi-Vue-Plus 进行二次开发扩展Flowable工作流功能&#xff0c;支持在线表单设计和丰富的工作流程设计能力。如果觉得这个项目不错&#xff0c;麻烦…...

AMFITRACK Gen3开发套件开箱测评:如何用电磁追踪技术搞定VR定位难题?

AMFITRACK Gen3开发套件深度评测&#xff1a;电磁追踪如何重塑VR定位体验 拆开AMFITRACK Gen3开发套件的包装箱时&#xff0c;那种精密仪器特有的金属质感立刻传递到指尖。作为第三代电磁运动跟踪系统的代表&#xff0c;这套设备正在挑战VR领域沿用多年的光学定位霸权。不同于需…...