of course minimizing memory leaks is very important, but if you can't keep your programming from leaking memory, c++ isn't right for you. the new operator in c++ plays a very important role in its design. polymorhpic classes wouldn't even be the same without new.
Here is some stupid code 
Code:
char* Str = "Wow";
delete [] Str;
isn't that just great? or
Code:
char* Str = new char[100];
free( Str );
or
Code:
char* Str = (char*) malloc( sizeof( char ) * 100 );
delete [] Str;
or
Code:
shared_ptr<char> Str ( new char[100] );
or
Code:
template<class T> inline void destroy(T*& p) { delete p; p = 0; }
char* Me = new char[100];
destroy( Me );
or
Code:
void m( char* p )
{
delete [] p;
p = new[100];
}
All those examples will be undefined behaviour
I seen worser code than memory leaks
. How about memory corruption?
Code:
int t[100];
t[100] = 0;
Code:
char Str[] = {'H', 'e', 'l', 'l', 'o' };
cout << Str << endl;
c++ is not a safe language, so it use wisely. the list can go on for miles