首页 > 系统相关 >【c++】【Linux】内存碎片

【c++】【Linux】内存碎片

时间:2025-01-16 21:03:55浏览次数:3  
标签:malloc c++ 碎片 内存 Linux 进程 块内存 分配

【c++】【Linux】内存碎片

内碎片

分配给进程未被使用的部分
当内存被分配给某个进程时,分配的内存块可能比实际需求稍大,未被使用的部分称为内碎片
例如,
如果需要3.6k内存 此时根据buddy伙伴系统内存分配方式 最少分配4k为一页 那其中0.4k未被使用的内存就是内碎片
如果使用malloc里面的brk()分配内存,随着系统频繁地 malloc 和 free ,尤其对于小块内存,堆内将产生越来越多不可用的碎片

外碎片

操作系统中无法利用的小内存
在系统中,由于内存分配和释放的不连续性,留下了许多零散的、无法利用的小块内存,这些小块内存加起来尽管足够,但无法分配给较大的进程。
例如,一个 4 KB 的进程释放了内存,但在其两端都是被占用的内存块,导致无法分配给需要更大连续空间的进程。

标签:malloc,c++,碎片,内存,Linux,进程,块内存,分配
From: https://blog.csdn.net/m0_64014551/article/details/145184160

相关文章

  • Linux基础03:用户相关操作 + 用户组相关操作 + 权限管理
    主要内容用户相关操作用户组相关操作权限管理用户和用户组基础1.计算机通过用户名和密码识别用户。2.Linux中新建用户后,需要设置密码。3.系统有一个特殊的用户root,这个被称为超级用户,一般会默认。4.用户组:把几个用户归在一起,这样的组被称之为用户组,规定文件所属用户组......
  • Linux基础02:+文件系统+ 目录操作+ 文件操作+ 存储转换
    内容提要文件系统目录操作文件操作存储转换文件系统Linux本质就是一个文件系统,Linux文件系统是操作系统组织、存取、保存数据的一种手段,整体采用层级式的倒状目录结构。倒树状结构中的目录/:根目录,Linux中的绝对路径就是由这个开始的/bin:主要存放系统的普通指令......
  • Linux运维学习记录14
    1.Docker的网络模式Docker的网络支持5种网络模式nonebridgecontainerhostnetwork-namebridge:描述:默认网络模式。如果未显式指定网络模式,Docker会将容器连接到一个默认的桥接网络docker0。每个容器都有自己的虚拟网卡,并通过docker0与其他容器通信。特点:容器之间......
  • C++ 面向对象(构造 & 析构函数)
    二、构造&析构函数2.1构造和析构2.1.1功能构造函数功能构造函数在类实例化对象时用于完成对象成员的初始化,通常包括以下操作:   1.为成员变量分配内存空间   2.初始化成员变量   3.执行类似打开文件、分配资源等额外操作析构函数功能主要作用......
  • 【C++】类与对象(中上)(难点部分)
    目录 ......
  • linux kernel tcp丢包分析
     现象使用netstat-s能看见如下丢包统计  1352910failedconnectionattempts1352910resetsreceivedforembryonicSYN_RECVsockets 查看netstat的代码https://sourceforge.net/p/net-tools/code/ci/master/tree/ 取的这两个文件:/proc/net/netstat, /pro......
  • Telnet在Windows和Linux上的使用方法
    Telnet是一个基于TCP/IP协议的远程登录协议,用于在网络上的计算机之间进行通信。它主要用于远程管理和测试网络服务。本文将详细介绍在Windows和Linux系统上如何安装和使用Telnet。一、在Windows上使用Telnet1.1启用Telnet客户端在Windows系统中,默认情况下Telnet客户端是未启用......
  • 使用 Golang 编译 Linux 可运行文件
    Golang(或Go)是一种开源编程语言,因其简单、高效、并发编程支持而备受欢迎。本文将详细介绍如何使用Golang编译生成可以在Linux上运行的可执行文件。一、安装Golang1.1下载Golang从Golang官方网站下载适合你操作系统的安装包:Golang下载页面1.2安装Golang在Ubuntu......
  • 在C++中std::string 和string有啥区别呀?
    在C++中,std::string和string实际上是同一个类型,只是它们的命名空间(namespace)不同。具体来说:(我说为啥在写代码的时候都有个usingnamespacestd;语句我还以为是闹着玩.)std::string明确指定了string类型位于std命名空间中。string是std::string的简写,但要使......
  • Linux基础01天:指令起步
    ​​​​​##Linux指令起步st@st-virtual-machine:~$st:当前登录用户名,安装的时候设置的@:没有意义,分隔符st-virtual-machine:主机名~:家目录$:用于区分用户角色的,$表示普通用户,#表示ROOT用户pwd:Linux命令,用来**查看当前所在目录的绝对路径**,Linux绝对路径......