46 template <
class OwnerClass>
61 struct BacktraceMapHolder
63 BacktraceMapHolder() =
default;
69 DBG (
"*** Leaked objects detected: " << map.size() <<
" instance(s) of class " << getLeakedObjectClassName());
70 DBG (getFormattedBacktracesString());
84 String getFormattedBacktracesString()
const 89 for (
typename BacktraceMap::Iterator i (map); i.next();)
91 str <<
"\nBacktrace " <<
String (counter++) <<
"\n" 92 <<
"-----------------------------------------------------------------" <<
"\n" 102 static BacktraceMap& getBacktraceMap()
104 static BacktraceMapHolder holder;
108 static const char* getLeakedObjectClassName()
110 return OwnerClass::getLeakedObjectClassName();
115 #if DOXYGEN || ! defined (JUCE_HEAVYWEIGHT_LEAK_DETECTOR) 116 #if (DOXYGEN || JUCE_CHECK_MEMORY_LEAKS) 139 #define JUCE_HEAVYWEIGHT_LEAK_DETECTOR(OwnerClass) \ 140 friend class juce::HeavyweightLeakedObjectDetector<OwnerClass>; \ 141 static const char* getLeakedObjectClassName() noexcept { return #OwnerClass; } \ 142 juce::HeavyweightLeakedObjectDetector<OwnerClass> JUCE_JOIN_MACRO (leakDetector, __LINE__); 144 #define JUCE_HEAVYWEIGHT_LEAK_DETECTOR(OwnerClass) Holds a set of mappings between some key/value pairs.
void remove(KeyTypeParameter keyToRemove)
Removes an item with the given key.
This class is a useful way of tracking down hard to find memory leaks when the regular LeakedObjectDe...
void set(KeyTypeParameter newKey, ValueTypeParameter newValue)
Adds or replaces an element in the hash-map.
static String getStackBacktrace()
Returns a backtrace of the current call-stack.