雲風pbc原始碼alloc c

2022-07-18 02:00:20 字數 1358 閱讀 7524

#include #include 

//用於統計記憶體的申請和釋放次數匹配

static

int _g = 0

;void *_pbcm_malloc(size_t sz)

void _pbcm_free(void *p)

}void* _pbcm_realloc(void *p, size_t sz)

void

_pbcm_memory()

//鍊錶節點,用於記錄每一塊記憶體的首位址

struct

heap_page ;

//整個鍊錶的入口,附加記錄第乙個heap_page節點的尺寸資訊,後續節點不會記錄

struct

heap ;

struct heap *_pbch_new(

intpagesize)

//heap結構中的尺寸記錄的是current指向的heap_page節點

struct heap * h = (struct heap *)_pbcm_malloc(sizeof(struct

heap));

//這裡這個記憶體申請尺寸 sizeof(struct heap_page) + cap

//申請的這塊記憶體尺寸為 cap,但是需要在記憶體塊頭部附加鍊錶節點即sizeof(struct heap_page),這樣就用heap_page把每塊記憶體串起來了

//也就是每個記憶體塊都要在頭部額外使用struct heap_page結構串聯

h->current = (struct heap_page *)_pbcm_malloc(sizeof(struct heap_page) +cap);

h->size =cap;

h->used = 0

; h->current->next =null;

returnh;}

void

_pbch_delete(

struct heap *h)

_pbcm_free(h);

}void*_pbch_alloc(

struct heap *h, int

size)

else

//直接將新建立的記憶體塊插入到煉表頭,heap也只記錄新建立的記憶體塊,原來的記憶體塊被鍊錶串連,只能等待後續的記憶體釋放

p->next = h->current;

h->current =p;

h->used =size;

//(p+1) 是為了指向真正的記憶體,而不是每個記憶體塊頭部的heap_page結構,p+1就是移動乙個heap_page的空間

return (p+1

); }

else

}

關於雲風在 Lua 中實現物件導向的原始碼分析

原始碼 local class function class super local class type class type.ctor false class type.super super class type.new function local obj dolocal create cr...

7 雲停車 原始碼篇

1.雲停車 開篇 2.雲停車 硬體篇 3.雲停車 業務篇 4.雲停車 平台篇 6.雲停車 其他篇 7.雲停車 原始碼篇 8.雲停車 臻識相機 9.雲停車 芊熠相機 parkcloud 雲停車web平台 parkserver 業務處理程式 parkservice 與相機互動程式 parksimulat...

天風網上商店系統 Beta 原始碼

一 執行環境 1.執行環境 windows,iis,sqlserver2005,net framework2.0 3.該資料夾必須有讀寫許可權,否則部分功能無法實現 當前版本 天風網上商店系統 beta 前台路徑 default.aspx 後台路徑 admin default.aspx 管 理 員 ...