#include <iostream>

#include <cstdlib>

void* operator new(std::size_t count)
{
  void *allocated = std::malloc(count);
  std::cout << __PRETTY_FUNCTION__ << " with count " << count << " : " << allocated << std::endl;
  return allocated;
}

void operator delete(void* ptr) noexcept
{
  std::cout << __PRETTY_FUNCTION__ << " with ptr " << ptr << std::endl;
  std::free(ptr);
}

struct myclass
{
  myclass() { std::cout << __PRETTY_FUNCTION__ << std::endl; }
  ~myclass() { std::cout << __PRETTY_FUNCTION__ << std::endl; }

  short dummy;
};

int main()
{
  std::cout << "sizeof(size_t) : " << sizeof(std::size_t) << std::endl;
  std::cout << "sizeof(myclass) : " << sizeof(myclass) << std::endl;
  myclass *arr = new myclass[3];
  std::cout << "arr : " << arr << std::endl;

  delete[] arr;
}
