title: C++ BoundsChecker followup
body: <p>We've been running for years with BoundsChecker for Visual C++ 6 (I think it was BoundsChecker 5 or 6, too). We've upgaded to VS2008 (finally!), and now need a follow-up for the outdated BoundsChecker.</p>
  
  <p>How's the landscape?<br>
  What tools are out there?<br>
  Any new kids in town?<br>
  Any new ideas dealing with the problems we used memory profilers for?<br>
  Your recent experiences with these tools?<br>
  Recommendations?  </p>
  
  <p>The main application is C++ with many COM DLL's, we are looking to track native, C++ and COM leaks and objects. Bounds Checker for that size was already a pain in performance, sorting out the slew of data and some of its limitations.</p>
  
  <p>Support for managed applications (primarily C#) is required, though that may be a separate tool.</p>
  
  <hr>
  
  <p>Related (but IMO incomplete) question: <a href="https://stackoverflow.com/questions/2560858/modern-equivalent-of-boundschecker-for-visual-studio-2008">Modern equivalent of BoundsChecker for Visual Studio 2008</a></p>
  
  <hr>
  
  <p><strong>[edit]</strong></p>
  
  <p>Regardign the comment, <em>"In modern C++, you just use self-checking types, and bounds are never broken"</em> : </p>
  
  <p>Reference counted smart pointers can have cyclic references. Interfacing COM components is inherently unsafe, as it requires a lot of manual memory management. I've had a UI-less 3rd party service leak GDI handles so it crashed our overnight tests - the vendor blamed it on a "strange" Microsoft API. I have to interface C-based libraries, I have tons of legacy code that assumes allocation trickery in the sense of Numerical Recipes is a good thing and variable names longer than 3 letters are for typists. I have code from engineers for whom a <code>std::vector&lt;double&gt;::iterator</code> looks much more scary than a <code>double ***</code>, good luck developing and testing these without a solid background in signal processing. </p>
  
  <p>So unless you come here, rewrite and encapsulate the core of a million lines of code in fool-proof C++ classes and make sure a few dozen products still work as before, keep your smart-assery to yourself. I wish I wouldn't need a memory checker, but I do. Thank you.</p>