#include <iostream>
#include <deque>
#include <list>
#include <vector>

namespace {
	  std::ios_base::Init const make_sure_cout_and_stuff_exists;
}

void* operator new (std::size_t size)
{
	if (auto p = malloc(size))
	{
		static auto counter = 0;
		std::cout << "Allocate (new) " << size << " bytes. " << p << " new-counter: " << ++counter << '\n';
		return p;
	}
	throw std::bad_alloc();
}
void operator delete (void* p)
{
	  static auto counter = 0;
	  std::cout << "Deallocate (delete) " << p << " delete-counter: " << ++counter << '\n';
	  free(p);
}
 
int main()
{
	  std::deque<int> v;
	  for (auto i = 1500; i--; )
		v.push_back(i);
}