Я имитируя блок памяти со статическим массивом структур, которые принимают форму:память Deallocation моделирование Выпуск
typedef struct memBlock
{
unsigned int isAllocated = 0;
unsigned int processID = 0;
}memBlock;
Я уже получил malloc()
-как функции, которая имитирует таНос принимая в запрашиваемом размер памяти из процесса и маркировку части массива, занятой установкой isAllocated, равной 1, и изменение PID на идентификатор процесса запрашивающего процесса.
Итак, теперь я хочу написать функцию типа free
, которая освободит память от этого массива, установив isAllocated в 0 и PID на 0, но как это сделать? Я знаю концептуально, что мне нужно начинать с индекса 0 этого массива и, возможно, проверять первый индекс, где isAllocated = 1 и ненулевой PID? я уже это реализовано до сих пор:
void* custom_free(void* ptr, unsigned int size)
{
unsigned int blockIndex = 0, sizeCount = 0, startIndex = 0;
if(ptr){ free(ptr); }
}
Edit: Раньше в моем коде у меня есть таНос призыв к структуре memBlock, как это:
memBlock *block = (memBlock *)malloc(BLOCK_SIZE);
где BLOCK_SIZE
препроцессор определена константа
@WhiZTiM Удаление тега C++ может быть преждевременным, поскольку встроенная инициализация членов структуры, как показано в структуре 'memBlock', невозможна в C, но она находится на C++. –
Это не C, а C++. Вы должны использовать операторы C++ 'new' /' delete'. И удалите тег C. – Olaf
Возможно, вы не поняли мой комментарий. Итак, повторим: ** это не C-код, но C++ ** C и C++ - разные языки, и вы должны использовать правильный тег. – Olaf