On Wed, 4 Dec 2024, Pali Rohár wrote:
On Wednesday 04 December 2024 14:51:34 LIU Hao wrote:
在 2024-12-04 04:17, Pali Rohár 写道:
It allowed me to compile application in debug mode with msvcrtd.dll
memory leak detector and then run it. It was compiled in the same way
via gcc and msvc.
I do not know a better way how to define those functions without locally
undefining macros. Is there some gcc/clang extension which can do it in
more cleaner way?
#define malloc(s) _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__)
/* Put the name in parentheses so it does not invoke the function-like
* macro. It's standard behavior; not an extension whatsoever. */
void* __cdecl (malloc) (size_t _Size);
Interesting idea. But it is better than the explicit undefining of
malloc macro? The advantage of pragma solution is that it contains
explicit "#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)" guard which
describe why it is needed. Parenthesis solution around malloc does not
explicitly describe why and when it is needed.
I have no strong opinion either way here, I'm fine with either (malloc) or
the pragma push_macro/undef solution.
// Martin
_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public