private heap 是 windows 提供的一種記憶體記憶體機制,對於那些需要頻繁分配和釋放動態記憶體的應用程式來說,private heap 是提高應用程式效能的一**寶,使用它能降低 new / malloc 的呼叫排隊競爭以及記憶體空洞。private heap 的原理及應用的資料很多,這裡就不一一介紹了,常用的 private heap api 有以下幾個,具體介紹請參考幫助文件:
heapcreate();heapdestroy();
heapalloc();
heaprealloc();
heapsize();
heapfree();
heapcompact();
由於是 c 風格的 api,使用起來比較繁瑣,因此本座在閒暇之餘用 c++ 對這些 api 進行了封裝,主要包括兩個類:
#pragma onceclass cprivateheap
;enum enallocoptions
;enum enreallocoptions
;enum ensizeoptions
;enum enfreeoptions
;enum encompactoptions
;public:
pvoid alloc(dword size, enallocoptions options = ao_default)
pvoid realloc(pvoid pvmem, dword size, enreallocoptions options = rao_default)
dword size(pvoid pvmem, ensizeoptions options = so_default)
bool free(pvoid pvmem, enfreeoptions options = fo_default)
dword comapct(encompactoptions options = cpo_default)
bool isvalid()
public:
cprivateheap(encreateoptions options = co_default, dword initsize = 0, dword maxsize = 0)
~cprivateheap()
private:
cprivateheap(const cprivateheap&);
cprivateheap operator = (const cprivateheap&);
private:
handle m_heap;
};template
class cprivateheapbuffer
~cprivateheapbuffer()
t* realloc(dword size, cprivateheap::enreallocoptions options = cprivateheap::rao_default)
dword size(cprivateheap::ensizeoptions options = cprivateheap::so_default)
operator t* () const
private:
cprivateheapbuffer(const cprivateheapbuffer&);
cprivateheapbuffer operator = (const cprivateheapbuffer&);
private:
cprivateheap& m_hpprivate;
t* m_pvmemory;
cprivateheap::enfreeoptions m_opfree;
};typedef cprivateheapbuffercprivateheapbytebuffer;
typedef cprivateheapbuffercprivateheapstrbuffer;
上述**看起來挺複雜,但使用起來卻是異常簡單的,請看下面的使用示例:
//全域性可見的 heap
cprivateheap g_heap;
class myclass
static
void test_sm_eap()
};void test_g_heap()
int _tmain(int argc, _tchar* argv)
codeproject
私有屬性與封裝
用 建構函式來建立物件 function dog var huzi new dog huzi.bark 汪汪 alert huzi.leg 4 上面並沒有完成物件導向的 封裝 所謂封裝 就要封閉一部分,外界無法訪問 開放一部分,通過開放部分間接訪問私有部分 下面使用 閉包來完成js物件導向之私有屬性...
iOS 私有庫封裝
二 建立本地spec庫 所謂spec repo,就是pods的索引。一旦在podfile中設定source為某個私有repo的git位址,在進行pod update的時候就會去這個repo中進行檢索,如果檢索到對應的pod,會讀取該pod的podspec從而進行安裝 建立本地spec庫 pod re...
C 封裝(成員屬性私有化)
c 封裝 成員屬性私有化 include include using namespace std 成員屬性設定為私有 1 可以自己控制讀寫許可權 2 對於寫可以檢測資料的有效性 class person 獲取姓名 string getname 獲取年齡 可讀可寫 如果想修改,年齡的範圍必須是0 15...