#include <iostream>
#include <new>
 
class test
{
    int i;  // 4 bytes
public:
    test() {std::cout << "ctor" << std::endl;}
    ~test() {std::cout << "dtor" << std::endl;}
 
    void* operator new[](size_t n)
    {
        void* result;
 
        result = ::operator new[](n);
        std::cout << "operator new[] size:" << n << " at:" << result << std::endl;
 
        return result;
    }
};
 
int main(int, char**)
{
    test* p = new test[2];
 
    std::cout << "new test[2] at:" << p << std::endl;
 
    delete[] p;
 
    return 0;
}