![](http://img4.cpooo.com/files/201905/20/p/3/1207632_1558340369.jpg)
DI818(3BSE069052R1)
ABBDI818(3BSE069052R1)系统提供了Mem_Alloc/Mem_Free两个函数来支持系统分区的申请和释放。申请的算法很简单,采用***适配方法从分区链表中找到合适内存分区,如果该区空闲内存链表不为空,则返回该链表***个内存块地址,否则查看下一个分区。如果找不到合适的内存块,则返回空指针。释放算法稍微复杂一些,它需要先检查该内存块属于哪个分区。这样做非常必要,如果把一个小块放到大块的内存分区中,一个任务申请了该空间,则该空间的一部分将跨越到另一个内存块,对该内存块的操作可能覆盖另一个内存块的数据。如果把一个大块放到了小块的分区中,则在分配的时候将分配了多余的空间,造成了内存空间的浪费。找到所图2创建内存分区流程图属分区后,直接把该块放到该区空闲内存链表的尾部。上述系统分区的方式其实是小范围动态分区上实现的静态方式。因为每个内存块大小是固定的,这样不可避免地要浪费一部分空间。对于这个问题的解决,系统还提供了一种纯动态的解决办法,就是调用malloc/free函数来申请内存块。2.1.3内存用户区的动态内存分配从内存划分图中可以看到有一块用户内存区,这是一块内核不会使用的内存区。该区留给用户使用,对于这块区域的申请和释放不调用系统提供的Mem_Alloc/Mem_Free函数,而是直接调用c语言提供的malloc/free函数。malloc具有不确定性,因为它的执行时间和空闲内存块的数量有关,而且多次使用malloc/free调用和释放内存块,可能产生大量的内存碎片。所以这种方式的调用要谨慎。由于用户内存区大小是可配置的,所以用户可以控制该区大小以减少碎片产生的问题。同时对于系统调用,例如任务堆栈分配,不会因为碎片太多而导致分配失败的问题。3.小结动静结合的方式给用户提供了比较大的自由度,用户可以从系统分区中申请内存块,也可以从用户内存区申请内存块。这样增加了系统的灵活性,同时也限制了大量碎片产生的可能(在不频繁删除建立系统内存分区的前提下)。也增加了部分c代码的可移植性。DSQC539DSQC358CDSQC346CDSQC346EDSQC327ADSQC509DSQC504DSDI130DSQC351DSQC101DSQC107DSQC202DSQC227DSQC236ADSQC236KDSQC257DSQC266ADSQC316DSQC328ADSQC334DSQC345ADSQC345BDSQC345CDSQC345DDSQC345EDSQC346BDSQC346CDSQC346UDSQC352ADSQC358CDSQC358EDSQC358FDSQC358GDSQC363DSQC365DSQC500DSQC501DSQC503DSQC505DSQC506DSQC508DSQC518ADSQC518BDSQC522DSTD160YXX157AYXZ149AYYE109AYYT102EDSQC539DSQC358CDSQC346CDSQC346EDSQC327ADSQC509DSQC504DSDI130DSQC351DSQC101DSQC107DSQC202DSQC227DSQC236ADSQC236KDSQC257DSQC266ADSQC316DSQC328ADSQC334DSQC345ADSQC345BDSQC345CDSQC345DDSQC345EDSQC346BDSQC346CDSQC346UDSQC352ADSQC358CDSQC358EDSQC358FDSQC358GDSQC363DSQC365DSQC500DSQC501DSQC503DSQC505DSQC506DSQC508DSQC518ADSQC518BDSQC522DSQC604DSQC604DSTD160YXX157AYXZ149AYYE109AYYT102E3HAB2245-13HAC14363-1ABB3E042759UABB3HAC020079-001ABB3HAC020633-001ABB3HAC022313-001ABB6369901-614ABB6369901-615ABB6369901-625ABB6369901-640ABB3E041775ABB3E041776ABB3E041926ABB3E042760UABB3HAC11530-1ABB3HNE00955-1ABB6369901-639ABB3E041250ABB3HAC14864-1ABB3HNM11971-1ABB3HNE8101-1ABB3E041460ABB6369901-617ABB6369901-383ABB6369901-454ABB6369901-467ABB3HAC022104-001ABB3E033864ABB3E041278ABB3HAC17971-1ABB3HAB8101-1ABB3HAC1620-1ABB3E042759ABB3E041927UABB3HAC6546-1ABB3HAC14265-1ABB3HAC023447-001ABB3HAC18159-1ABB3HAC14279-1CCBM-X4-DSQC-X43E041579DSQC224YB560103-BEDSQC256A3HAB2211-1DSQC266H3HAB8800-1DSQC257D3HAB2208-1DSQC3313HAB7215-1DSQC266T3HAB8802-1DSQC3403HAB6914-1DSQC3613HAC0373-1DSQC3203HAB7231-1DSQC3173HAB2220-1DSQC2533HAA3563-AMADSQC345C3HAB8101-3DSQC346A3HAB8101-5DSQC3253HAB2241-1DSQC3503HNE00025-1DSQC3543HNE00065-1DSQC266A3HAB8796-1DSQC266B3HAB8797-1******************************DSQC266C3HAB8798-1DSQC266K3HAB8799-1DSQC266G3HAB8801-1DSQC266U3HAB8803-1DSQC3713HAC2480-1DSQC236D3HAB2207-1DSQC3153HAB2214-1DSQC3303HAB6372-1DSQC3693HAC2424-1DSQC3703HAC2425-1DSQC3723HAC2481-1DSQC3443HAB7686-1DSQC5083HAC5393-2DSQC3013HAA3573-ABADSQC3246369901-331DSQC266T6369901-353DSQC314A3HAB2215-1DSQC314B3HAB2216-1DSQC314C3HAB2231-1DSQC345D3HAB8101-4DSQC346C3HAB8101-7DSQC346G3HAB8101-8DSQC3633HAC1462-1DSQC3653HAC1620-1DSQC5173HAC7055-1DSQC3363HNE00001-1DSQC2246369901-179DSQC208AYB560103-ASDSQC2483HAA3563-AAADSQC249B3HAA3563-AHADSQC226YB560103-BHDSQC2523HAA3563-ALADSQC2236369901-178DSQC2526369901-236DSQC2603HAB2206-1DSQC5633HAC16035-1DSQC328A3HAC17970-1DSQC345A3HAB8101-1DSQC346B3HAB8101-6DSQC5043HAC5689-1DSQC5013HAC3617-1DSQC108YB161102-ANDSQC210YB560103-AMDSQC2553HAA3563-ARADSQC3176369901-308DSQC345E3HAB8101-14DSQC321VDSQC116YB161102-BEDSQC239YB560103-CHDSQC2543HAA3563-APADSQC3073HAA3573-AJADSQC249A6369901-237DSQC3236369901-330DSQC3156369901-332DSQC243YB161102-CTDSQC221YB560103-BADSQC229YB560103-BMDSQC232YB560103-BRDSQC241YB560103-CLDSQC358C3HAB8101-10DSQC358E3HAB8101-12DSQC102YB161102-ACDSQC2593HAB2205-1DSQC345B3HAB8101-2DSQC5003HAC3616-1DSQC5033HAC3619-1DSQC358G3HAB8101-16DSQC2306369901-120DSQC2536369901-218DSQC346C6369901-421DSQC122YB161102-BHDSQC230YB560103-BNDSQC3023HAA3573-ACADSQC266A6369901-349DSQC266G6369901-352DSQC3276369901-455DSQC5396369901-574DSQC3083HAA3573-AKADSQC266B6369901-350DSQC266C6369901-351DSQC3346369901-395DSQC3316369901-418DSQC114YB161102-BDDSQC136YB161102-CKDSQC138YB161102-CMDSQC139YB161102-CNDSQC204YB560103-AEDSQC118YB161102-BLDSQC2583HAA3563-AUADSQC346E3HAB8101-11DSQC2096369901-102DSQC249B6369901-217DSQC2486369901-226DSQC100YB161102-AADSQC112YB161102-BCDSQC209YB560103-ALDSQC2573HAA3563-ATADSQC358F3HAB8101-15DSQC3733HAC3180-1DSQC5043HAC5689-1DSQC346U3HAB8101-13DSQC2026369901-100DSQC2116369901-104DSQC2286369901-117DSQC2416369901-216DSQC3356369901-327C6369901-425DSQC346E6369901-464DSQC219YB560103-AYDSQC233YB560103-BSDSQC564A3HAC022104-001DSQC540A6369901-610DSQC105YB161102-AFDSQC5083HAC5393-2DSQC3233HAB5956-1DSQC3243HAB5957-1DSQC5393HAC14265-1DSQC5053HA***296-1DSQC2303E041456DSQC2443HAA3563-AKADSQC115YB161102-BSDSQC129YB161102-BVDSQC3513HNE00006-1DSQC126YB161102-BMDSQC3593HAC0261-1DSQC5243HAC10846-1DSQC6003HAC12814-1DSQC6013HAC12815-1DSQC6113HAC13389-2DSQC5613HAC16036-1DSQC332A3HAC17973-1DSQC127YB161102-BYDCQC3553HNE00554-1DSQC237YB560103-CFDSQC6263HAC020465-001DSQC249A3E041641DSQC3343HA***45-1DSQC3523HNE01590-1DSQC3773HNE01586-1DSQC266H6369901-354DSQC223YB560103-BDDSQC3683HAC2183-1DSQC3136369901-339DSQC6613HAC026253-001DSQC6333HAC022286-001DSQC2106369901-103DSQC1296369901-33DSQC314B6369901-335DSQC3326369901-403DSQC113YB161102-BBDSQC119YB161102-BFDSQC121YB161102-BNDSQC125YB161102-BRDSQC124YB161102-BUDSQC130YB161102-CADSQC135YB161102-CHDSQC137YB161102-CLDSQC200YB560103-AADSQC201YB560103-ABDSQC205YB560103-ADDSQC206YB560103-AGDSQC212YB560103-APDSQC218YB560103-***DSQC220YB560103-AZDSQC225YB560103-BGDSQC3223HAB5960-1)