穩健記憶體管理

2021-05-24 15:31:48 字數 1516 閱讀 2095

/

//  自定義記憶體管理器

////  [總空閒數(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條。但盡力了,有時是事不在人為的。不過為了不耽擱後...