harib07a:
  整理內(nèi)存管理函數(shù):memman_alloc和memman_free能夠以最小1字節(jié)進(jìn)行內(nèi)存管理,但時間久了后,容易產(chǎn)生外部碎片;為此,筆者編寫了一些以0x1000字節(jié)為單位進(jìn)行內(nèi)存分配和釋放的函數(shù),它們會把指定的內(nèi)存大小按照0x1000字節(jié)為單位向上舍入(roundup),0x1000大小正好是4KB.
  1、向下舍入:以0x1000為單位向下舍入
    0x1234_5678 & 0xffff_f000 = 0x1234_5000;
    i = i & 0xffff_f000 ;
  2、向上舍入:以0x1000為單位向上舍入
    i = (i + 0xfff) & 0xffff_f000

seo優(yōu)化培訓(xùn),網(wǎng)絡(luò)推廣培訓(xùn),網(wǎng)絡(luò)營銷培訓(xùn),SEM培訓(xùn),網(wǎng)絡(luò)優(yōu)化,在線營銷培訓(xùn)

unsigned int memman_alloc_4k(struct MEMMAN *man, unsigned int size) {
    unsigned int a;    //以0x1000為單位向上舍入的方式進(jìn)行內(nèi)存分配
    size = (size + 0xfff) & 0xfffff000;
    a = memman_alloc(man, size);    return a;
}int memman_free_4k(struct MEMMAN *man, unsigned int addr, unsigned int size) {    int i;    //以0x1000為單位向上舍入的方式進(jìn)行內(nèi)存釋放
    size = (size + 0xfff) & 0xfffff000;
    i = memman_free(man, addr, size);    return i;
}

網(wǎng)友評論