/
// 自定義記憶體管理器
//// [總空閒數(4 byte)]
// [資料塊(itemsize byte)][是否占用(1 byte)][當前塊索引(4 byte)][下塊索引(4 byte)]
// [資料塊(itemsize byte)][是否占用(1 byte)][當前塊索引(4 byte)][下塊索引(4 byte)]
// ......
// [資料塊(itemsize byte)][是否占用(1 byte)][當前塊索引(4 byte)][下塊索引(4 byte)]
// [第1空閒塊索引][第2空閒塊索引]......[第n空閒塊索引]
// 塊索引 從1開始
/class cmymemorymanager
;//實現
#include "stdafx.h"
#include "windows.h"
#include "mymemorymanager.h"
cmymemorymanager::cmymemorymanager(int iitemsize,int iitemcount)
;cmymemorymanager::~cmymemorymanager()
;//初始化記憶體區(預留記憶體區)
//iitemsize - 每塊位元組數 iitemcount - 總塊數
bool cmymemorymanager::init(int iitemsize,int iitemcount)
return true;
}void cmymemorymanager::lock()
void cmymemorymanager::unlock()
//申請記憶體引用
lpvoid cmymemorymanager::new(int len)
else
unlock();
blnget = true;}}
return p;
}//釋放記憶體引用
bool cmymemorymanager::delete(lpvoid p)
*pref = 0;
//讀取並清除下一塊索引
pnext = (int *)((int)p + m_itemsize + 5);
inext = *pnext;
*pnext = 0;
unlock();
//計算下一塊位址
if(inext >= 1)
p = (lpvoid)((int)pdata + 4 + (inext - 1) * (m_itemsize + 5));
}p = null;
return true;
}//獲取資料塊位元組數
int cmymemorymanager::getitemsize()
//獲取總塊數
int cmymemorymanager::getitemcount()
//獲取總空閒數
int cmymemorymanager::getfreecount()
記憶體管理 記憶體管理概述
儲存器的發展方向是高速 大容量和小體積,即儲存器嘗試更高讀寫速度,更大儲存容量,更小物理體積。在計算機中,常見的儲存器有 暫存器,快取,記憶體,硬碟,一般硬碟之類的輔助儲存器又稱外存。在平均讀寫速度上,有 暫存器 快取 記憶體 外存 在單位容量 上,有 外存 記憶體 快取 暫存器 cpu處理器只能直...
《記憶體管理》 記憶體
1.c c 記憶體分布 我們先來看下面的一段 和相關問題 int globalvar 1 static int staticglobalvar 1 void test char char2 abcd char pchar3 abcd int ptr1 int malloc sizeof int 4 ...
穩健的漫步
2019年的計畫第乙個暫未達成,其實effective stl這本書18年12月開始看的了,只不過由於年末節日多,專案版本更新頻繁,空閒時間少而一直緩慢的前進。直至目標截止期的今天,也只不過是看完一遍,第二遍鞏固並寫博文到條目二十四,距離目標還有26條。但盡力了,有時是事不在人為的。不過為了不耽擱後...