is there any good programs that detect memory leaks and can point you in the right direction
i need a really good one , not even mind paying real money to buy a professional software that can do it
Posted 26 January 2013 - 09:40 AM
To expand a little on SiCrane's response:
Tristam MacDonald - SDE @ Amazon - swiftcoding [Need to sync your files via the cloud? | Need affordable web hosting?]
Posted 26 January 2013 - 11:20 AM
And when running MinGW on Windows, you're out of luck for free options as far as I've looked. ![]()
Edited by Servant of the Lord, 26 January 2013 - 03:20 PM.
All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.
Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal
Posted 26 January 2013 - 04:44 PM
Edited by Karsten_, 26 January 2013 - 04:45 PM.
Posted 26 January 2013 - 06:40 PM
Are you using smart pointers such as std::auto_ptr or std::tr1::shared_ptr?
These will help prevent almost all memory leak issues and really are the way to go in modern C++. Afterall, prevention is better than cure ;)
std::auto_ptr was designed badly and has been deprecated. It was designed badly because they were trying to add the features that std::unique_ptr has, before they had the actual capabilities (move semantics) to do so properly, so they worked around the problem instead of fixing the problem (the problem being a difficult and huge change, but one they successfully made in C++11). One side effect of 'working around' the problem is std::auto_ptr can't be used in most standard library containers. ![]()
All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.
Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal
Posted 27 January 2013 - 09:20 AM
If you like doing it yourself there is always the possibility of overriding global new and delete operators (normal and array version) and possibly use some makro magic to include __FILE__ and __LINE__ in the calls inside of files where you expect errors (that needs 1 more operator for all variants), when doing a debug build. Then collect data in there and print out a log for calling wrong operator delete, deleting twice and remaining allocations at end of your program.
Though using some premade library would probably give you better results.
Posted 27 January 2013 - 10:21 AM
If you like doing it yourself there is always the possibility of overriding global new and delete operators
I don't terribly recommend this approach. It can play havoc when your project incorporates DLLs, as the correct new/delete operator isn't always used across DLL boundaries...
Tristam MacDonald - SDE @ Amazon - swiftcoding [Need to sync your files via the cloud? | Need affordable web hosting?]
Posted 27 January 2013 - 10:32 AM
Yeah as said I would only do that in a debug build not on your release.
Also its safer anyways to not allocate anything inside one dll and deallocate it outside and then there should be no problem. If there is one, it just brought a possible bug to surface, which was the point of overwriting it.
Posted 27 January 2013 - 11:31 AM
Posted 27 January 2013 - 01:33 PM
Yeah true, so can't really be called "modern C++". But it is better than using "raw" pointers for everything I suppose.std::auto_ptr was designed badly and has been deprecated.
Posted 30 January 2013 - 05:09 PM
To expand a little on SiCrane's response:
- Under Windows+MSVC, the runtime has built-in support for tracking leaks.
- If you are running Linux, valgrind's memcheck is very effective.
- On a Mac, Apple's Instruments is your friend.
QFT.
This is some very good advice and so far you did not comment on even trying it.