views:

1129

answers:

4

I'm currently looking for a good memory / leak detection tool for Windows. A few years ago, I used Numega's Boundschecker, which was VERY good. Right now it seems to have been sold to Compuware, which apparently sold it again to some other company.

Trying to evaluate a demo of the current version has been so far very frustrating, in the best "enterprisy" tradition:

(a) no advertised prices on their website (Great Red Flashing Lights of Warning);
(b) contact form asked for number of employeers and other private information;
(c) no response to my emails asking for a evaluation and price.

I had to conclude that BoundsChecker is now one of "those" products. Y'know, the type where you innocently call and tomorrow 3 men in black suits turn up at your building wanting to talk to you about "partnerships" and not-so-secretly gauge the size of your company and therefore how much they can get away with charging you.

SO, rant aside, can anyone recommend an excellent memory checking/leak detection tool, how much it costs, and suggestions for where to buy?

+2  A: 

Microsoft's Application Verifier tool is very good at detecting leaks as well as a bunch of other common programming mistakes on Windows (COM, heaps, TLS, locks, etc).

It doesn't do so much in the way of profiling, but it will give you the stack of where the memory was allocated when you leak it, or the stack where it was free'd the first time if you double free, etc.

jeffamaphone
+1  A: 

I've been fairly happy with AQTime, and the pricing is tough to beat (and very transparent - $599/user).

The allocation profiler works fairly well - it's not quite as sophisticated as Boundschecker (from what I remember of Boundschecker), but what it does, it does well - and it handles quite a few other things, too.

Reed Copsey
+3  A: 

You can try Memory Validator. You can try the evaluation copy of the same as well.

Licensed version prices

aJ
+1 I can also recommend it.
Magnus Skog
+1  A: 

Beware of Compuware's bounds checker: It is stable up to a point. It costs about 3600 dollars, and about an equal amount to maintain from year to year. But that is peanuts compared to Coverity. I haven't gotten a good test run to work right under Bounds Checker for the last 3 years. That is why I don't use it anymore, and why I don't recommend you use it, except on small, tiny projects. On big enterprise apps, it's just too slow, takes up too memory, and simply stops working. I mean really, do you want your application to take 5 minutes to boot? Do you want your test executions to take 3 times longer? Worst of all, is it's tendency to just lock up. Customer support from Compuware was pretty limited. But bounds checker was sold to another company (can't remember their name) whose website is so aniceptic, sterilized and dry, it makes financial company websites look entertaining. But the killer problem with BoundsChecker is it is 32 bit only. So if you need to profile a large application that takes lots of memory (More than 1 Gig), you are simply out of luck. Bounds Checker will eat up 2 to 3 Gigs of memory from your app. And with 32 bit apps, you well know that 4 Gigs is the tops you get.

Coverity is great if you hire a person to babysit it. Seriously Coverity costs more than my house. That's not to mention the person my company would have too hire to babysit the dang thing. It takes 24 hours to do it's magic. And it doesn't do all that much more magic than simply compiling your code at warning level 4, and turning on 'Code Analysis' (In visual studio).

I've tried other memory leak tools (for native code). They all SUCK big time, are too complicated, or just plain old lock up the system. I'm so disgusted with the entire field of memory profilers, that I just want to go back to using the debug CRT. That or just write my own.

As for code coverage tools, Bullseye wins hands down. Why can't a memory leak detector just work as solidly as bullseye?

C Johnson
Unfortunately, they only thing I can add is Amen.
Fernando