Haven't achived full results yet (only been working on it for about 20 minutes)

nd.h
Code:
namespace T {
        class Dummy {
                int *p;
                public:
                        Dummy();
                        ~Dummy();
                void DoSomething();
        };
};
nd.cpp
Code:
#include <iostream>
#include "nd.h"

namespace T{
        void* operator new(std::size_t t)
        {
                std::cerr<<"Hello I'm new"<<std::endl;
                return malloc(t);
        }
        void operator delete(void *ptr)
        {
                std::cerr<<"Laters"<<std::endl;
                free(ptr);
        }
        Dummy::Dummy()
        {
                p = new int;
        }
        Dummy::~Dummy()
        {
                delete p;
        }
        void Dummy::DoSomething()
        {
                *p = 5;
                std::cout<<"p = "<<*p<<std::endl;
        }
};
ndmain.cpp
Code:
#include <iostream>
#include "nd.h"
using std::cout;
using std::endl;
int main()
{
        T::Dummy *d= new T::Dummy;
        d->DoSomething();
        delete d;
        cout<<"Meh?"<<endl;
}
Result:
Hello I'm new
p = 5
Meh?
So its calling the specific new like it's suppose to but for some reason isn't call it's delete.