电子产业一站式赋能平台

PCB联盟网

搜索
查看: 209|回复: 0
收起左侧

什么是内存碎片?

[复制链接]

1001

主题

1001

帖子

8807

积分

高级会员

Rank: 5Rank: 5

积分
8807
发表于 2023-9-21 12:00:00 | 显示全部楼层 |阅读模式

rfg5z1yci2264024997447.gif

rfg5z1yci2264024997447.gif

" D" u: v. \$ f2 u9 u# U/ N7 \: u点击上方蓝色字体,关注我们
0 M& M7 q1 n% I- M+ \) N* {
+ A# [6 f$ @  ^# f( _5 l过程说明如下:" R' [7 Y# N2 ?% u. e
(1)、此时内存堆还没有经过任何操作,为全新的。. Y  C. E& M3 I: b) H
(2)、此时经过第一次内存分配,一共分出去了 4 块内存块,大小分别为 80B、80B、10B 和100B。 1 A3 a" `, W; A
(3)、有些应用使用完内存,进行了释放,从左往右第一个 80B 和后面的 10B 这两个内存块就是释放的内存。如果此时有个应用需要 50B 的内存,那么它可以从两个地方来获取到,一个是最前面的还没被分配过的剩余内存块,另一个就是刚刚释放出来的 80B 的内存块。但是很明显,刚刚释放出来的这个 10B 的内存块就没法用了,除非此时有另外一个应用所需要的内存小于 10B。
( ^* ~1 |7 I( K* D" T/ j(4)、经过很多次的申请和释放以后,内存块被不断分割、最终导致大量很小的内存块。也就是图中 80B 和 50B 这两个内存块之间的小内存块,这些内存块由于太小导致大多数应用无法使用,这些没法使用的内存块就沦为了内存碎片。: ]: x7 h3 H! T

$ K5 z! D) Q2 k7 ?! r4 M: m内存碎片是内存管理算法重点解决的一个问题,否则的话会导致实际可用的内存越来越少,最终应用程序因为分配不到合适的内存而崩溃,所以我们需要一个优良的内存分配算法来避免这种情况的出现。 ( ^* ?9 [$ O0 P

! R, d2 j0 }+ t+ p: ?

lis4ws00uhs64024997547.png

lis4ws00uhs64024997547.png

  M9 x  S& Y4 P- Z往期推荐详解CAN总线:CAN总线通信优先级机制
6 ]4 E' i4 x; SLabVIEW实现Modbus通信5 j1 x8 X5 U5 C1 S4 H& \, I
LabVIEW实现PCB电路板坐标定位(实战篇—2)! Z+ w6 d& T. D: s: ]6 S7 N
如何设计电桥传感器驱动电路?
1 S; k* n* A$ x( pRS485通信如何设计emc电路?9 {2 T7 q) c  ~- p/ f9 q

3 C/ Q+ G4 m4 l  V

mai0i3nakol64024997647.jpg

mai0i3nakol64024997647.jpg
0 ^, o" k1 v# ~, r. ~9 ~. `

v1rnih2zz0w64024997747.gif

v1rnih2zz0w64024997747.gif

9 [0 L9 o* T3 V点击阅读原文,更精彩~
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表