Example #1
0
int main() {
   MemoryManager heaper(50);
   std::cout << "Heap initialized" << std::endl;
   heaper.showBlockList();

   std::vector<unsigned char *> chunks;

   std::default_random_engine gen(time(0));
   std::uniform_int_distribution<unsigned int> distr(0, 20);
   for (int i=0; i<10; ++i) {
       unsigned int size = distr(gen);
       std::cout << "Requesting memory size " << size << "...";
       unsigned char *p = heaper.malloc(size);

       if (p)
           chunks.push_back(p);
       else
           std::cout << " FAILED";

       std::cout << std::endl;
       heaper.showBlockList();
   }

   while (auto still_allocated = chunks.size()) {
       auto choice = std::uniform_int_distribution<std::vector<unsigned char *>::size_type>(0, still_allocated-1)(gen);
       std::cout << "Freeing " << (void *) chunks[choice] << std::endl;
       heaper.free(chunks[choice]);
       chunks.erase(chunks.begin() + choice);
       heaper.showBlockList();
   }

   return 0;
}
void insert(int ele,int *arr,int *n)
{
	(*n)++;
	arr[*n]=ele;
	heaper(*n,arr);
}