As a C++ Developer here's some simply guidelines:
- Use pointers only when absolutely necessary
- If you need a pointer, doublecheck if a SmartPointer is a possibility
- Use the GRASP Creator pattern.
As for the detection of memory leaks personally I've always used Visual Leak Detector and find it to be very useful.