The Callstack Filters tab allows you to specify symbols that should not appear in callstacks collected by Memory Validator.
The default options are shown below:
Callstack filters can help simplify the display of callstacks, making it easier to see effective rather than actual allocation locations.
The principal use of this feature is when an inline function definition allocates memory which is then used by your application.
By removing the symbol from the callstack, the memory appears to be allocated at the point of calling the inlined function, not inside it.
By way of example, the two images below show a callstack for allocating a BSTR using an inline function A2BSTR which calls another inlined function A2WBSTR, defined in the ATL header file atlconv.h.
The second version has had the inline functions (A2BSTR and A2WBSTR) filtered out so as not to appear in the callstack.
Add a symbol to the list of symbols to be filtered out of the beginning of callstacks:
•Add An entry is added to the list enter the name of the symbol press return or click anywhere outside of the field to confirm (or press escape to cancel)
•Remove removes any select entries in the list
•Remove All removes all symbol names, clearing the list
To edit an existing symbol, double click the list entry.
For a couple of specific cases, you can add multiple callstack filters at once, although note that these are already in the list by default.
•ATLconv add the default inline symbols used in the atlconv.h header file (T2BSTR, A2BSTR etc)
•MinGW add the default memory allocation and deallocation symbols used in the MinGW compiler (__Znwj, __Znaj, and __ZdlPv)
Reset All - Resets all global settings, not just those on the current page.
Reset - Resets the settings on the current page.