Kernel Memory Management Guidelines
- Avoid using bare pointers for dynamically allocated objects. Prefer
scoped_ptr, shared_ptr, or another RAII class such as BSONObj.
- Do not use auto_ptr’s and refactor legacy ones out whenever possible.
(Careful with C++ driver and backward compatibility though.)
- If you assign the output of new/malloc() directly to a bare
pointer you should document where it gets deleted/freed, who owns it
along the way, and how exception safety is ensured. If you cannot
answer all three questions then you probably have a leak.