Is there a way to redefine malloc at link time on Windows?
c, windows
Solution
There is really good discussion of how hard this is here:
http://benjamin.smedbergs.us/blog/2008-01-10/patching-the-windows-crt/
Apparently, you need to patch the CRT
Edit: actually, a MS employee gave the technique in the discussion. You need to move your malloc to a lib, and then link it before the CRT
"he also mentions that if you link your malloc as a lib before the CRT (i.e. make sure to turn on ‘ignore default libs’ and explictly include the CRT), you’ll get what you want, and can redistribute this lib without problems."
Problem
I would like to replace the default malloc at link time to use a custom malloc. But when I try to redefine malloc in my program, I get this error: ``` MSVCRT.lib(MSVCR80.dll) : error LNK2005: _malloc already defined in test.lib(test.obj) ``` This works perfectly on any Unix, and it works on Windows with most functions, but not with malloc. How can I do this? And what is different with malloc that disallow overriding it? I know I could replace every call to malloc with my custom malloc, or use a macro to do this, but I would rather not modify every third party library.