freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c內(nèi)存池設(shè)計(存儲版)

2025-08-30 10:52上一頁面

下一頁面
  

【正文】 ****************************** 計算所需的內(nèi)存塊數(shù)目 by 風清揚 song 130728 *****************************************/ void CMemePool::CalNeetLinkNumber(const size_t amp。 size_t iIndex = 0。 } else { return NULL。 //計算向后移動多少內(nèi)存塊 CalNeetLinkNumber(sSize)。 return PTemp。amp。 } if(NULL != m_Head) { delete m_Head。 } } }。 char * ptrCharArrayC = (char *) g_ptrMemPoolGetMemeroy((void**)amp。ptrCharArray,1300) 。 g_ptrMemPoolFreeAllocMemeroy(ptrCharArray, 1300) 。 } 。 } g_ptrMemPoolShowTheMemePoolStatue()。 g_ptrMemPoolFreeAllocMemeroy(ptrCharArrayB, 80) 。ptrCharArrayB,80) 。 iIndex++。 pTemp = pTempnext。 } /***************************************** 清空向系統(tǒng)申請的內(nèi)存 by 風清揚 song 130728 *****************************************/ void CMemePool::CleanAllMemeDate() { TMemeLinkNode *pTemp = m_Headnext。 } /***************************************** 查找之前分配內(nèi)存的節(jié)點 by 風清揚 song 130728 *****************************************/ TMemeNode * CMemePool::SearchAllocNode(void *p) { TMemeNode *PTemp = m_Headnext。 if(NULL == pFind) { m_sError = can not find the alloc point,you may use wrong。 //記錄分配了幾塊內(nèi)存,避免后續(xù)遍歷 pTemppEndNode = m_Currentnext。amp。 AllocPoolMemeroy()。 //遍歷內(nèi)存塊找到合適的內(nèi)存 while(PTemp != m_Current) { //走到結(jié)尾,從頭來 if(NULL == m_Current) { m_Current = m_Headnext。 m_MemePoolUseSize += sSize。 while(PNode != m_Head amp。 } } UpdateLinkNodeSize(m_LastNode)。 m_LastNodeData = amp。 PNodefirst = m_Head。 //向上取整需要的節(jié)點數(shù)目 m_Number = ceil(fTempValue)。 } /***************************************** 將原內(nèi)存的指針進行重定向( Alloc 后原有內(nèi)存可能被釋放了) by 風清揚 song 130728 *****************************************/ void CMemePool::ResetLinkToMemery() { TMemeLinkNode *pTemp = m_Headnext。 m_MemePoolFreeSize += m_MemePollSize。 m_HeadData = NULL。 m_LastNode = NULL。 }。 //內(nèi)存池分配的大小 size_t m_MemePollSize。 //雙向鏈表的頭節(jié)點 TMemeLinkNode *m_Head。 void CalNeetLinkNumber(const size_t amp。 CMemePoolamp。 //分配內(nèi)存 void *GetMemeroy(void **p,const size_t amp。 //保存分配的內(nèi)存地址 EigthByte *Data 。 static const size_t DEFAULTMEMENODESIZE = 100。 后續(xù)改進 : 1, 需要對多線程的支持,目前的內(nèi)存池還只能在單線程的環(huán)境下運行。并且對于第二種情況,會出現(xiàn)的問題是原有的指針全都失效。 語法:指針名 =( 數(shù)據(jù)類型 *) realloc(要改變內(nèi)存大小的 指針 名,新的大小)。之后使用雙向鏈表 DATA 指針指向內(nèi)存塊,每個指針能分配的大小如圖所示從大到小遞減。C++內(nèi)存池設(shè)計 在項目中進程要對變量和對象分配空間,由于頻繁的使用 new 和 delete 很消耗程序的運行時間,而且容易產(chǎn)生各種內(nèi)存泄露,內(nèi)存釋放錯誤等問題。將雙向鏈表指向指向內(nèi)存如下所示: 系 統(tǒng) 分 配 的 內(nèi) 存 塊H e a d4 0 0 3 0 0 2 0 0 1 0 0N U L LDATEDATEDATEDATE 假設(shè)內(nèi)存池初始塊數(shù)為 4 塊,每塊的大小為 100 個字節(jié),則向系統(tǒng)申請 400 個字節(jié)的內(nèi)存塊,每塊的大小為 100 字節(jié)。 函數(shù)簡介 原型: extern void *realloc(void *mem_address, unsigned int newsize)。無論哪種情況多要對新加的內(nèi)存進行指針指向分配。 釋放向系統(tǒng)申請的內(nèi)存 釋放雙向鏈表。 //內(nèi)存池的默認大小和分配節(jié)點的默認大小 static const size_t DEFAULTMEMEPOOLSIZE = 1000。 //記錄內(nèi)存池分配的首地址 bool isMemeBegin。 ~CMemePool()。 private: //禁止復制與構(gòu)造,要傳遞就用引用吧 CMemePool(CMemePool *tCMemePool)。 void UpdateLinkNodeSize(TMemeNode *PNode)。 void ResetLinkToMemery()。 //每一個內(nèi)存塊的大
點擊復制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1