In earlier stages of C++, it was impossible to delete a const object, even if that object was constructed on the free store. This could cause memory leaks.
However, the C++ Standard was changed recently. You can now use operator delete to destroy const objects that were created by new:
class Foo{}; int main() { const char * p = new char[12]; // ptr to const char const Foo * const f = new Foo; // const ptr to const Foo delete p; // fine delete f; // fine }
Note that some existing compilers may not support this feature yet.