Skip to content

kris18shadow/Project1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Project1

MemoryAllocator

В рамките на този проект трябва да се разработи собствен memory allocator. За целта трябва да реализирате следните функции:

• MyMalloc, която получава като вход брой байтове, които трябва да се заделят и връща указател към заделения от нея блок. При неуспех функцията да връща NULL;

• MyFree, която освобождава паметта заделена с MyMalloc.

Сами можете да изберете типа на функциите и на техните параметри, например:

   char* MyMalloc(size_t Size);
   void MyFree(char* pBlock);

Също така сами трябва да изберете какво да бъде тяхното поведение при възникване на грешка (например ако MyAlloc не може да задели памет или когато на MyFree бъде подаден адрес, който не е бил заделен с MyAlloc и т.н.). Началният адрес на блока, който връща MyMalloc трябва да бъде подравнен на 8 байта. Можете сами да изберете какъв да бъде алгоритъмът, който да реализирате. Той трябва да бъде такъв, че да позволява операциите да протичат бързо и да се намали фрагментацията. При реализацията на двете функции не е необходимо да използвате примитиви на операционната система. За работата на двете функции е достатъчно да заделите и поддържате достатъчно голям обем памет, от който да заделяте и в който да освобождавате необходимите на потребителя блокове. Ето пример за това как трябва да може да работят двете функции:

int *pArr1 = (int*) MyMalloc(100 * sizeof(int));
int *pArr2 = (int*) MyMalloc(100 * sizeof(int));
pArr1[0] = pArr2[0] = 10;
MyFree(pArr1);
MyFree(pArr2);

About

MemoryAllocator

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages