Ich möchte das Standard-malloc zur Verbindungszeit ersetzen, um ein benutzerdefiniertes malloc zu verwenden. Aber wenn ich versuche malloc in meinem Programm neu zu definieren, bekomme ich diesen Fehler:Gibt es eine Möglichkeit, malloc bei Link-Zeit unter Windows neu zu definieren?
MSVCRT.lib(MSVCR80.dll) : error LNK2005: _malloc already defined in test.lib(test.obj)
Das funktioniert perfekt auf jedem Unix, und es funktioniert unter Windows mit dem meisten Funktionen, aber nicht mit malloc. Wie kann ich das machen? Und was ist anders mit malloc, die das Überschreiben verbieten?
Ich weiß, ich könnte jeden Aufruf von malloc mit meinem benutzerdefinierten malloc ersetzen, oder verwenden Sie ein Makro, um dies zu tun, aber ich möchte lieber nicht jede Third-Party-Bibliothek ändern.
In der gleichen Diskussion wird erwähnt, dass die "Lib vor dem CRT" -Ansatz nicht zuverlässig funktioniert mit Funktionen wie (strdup) – Weidenrinde
was ist '_CrtSetAllocHook': https://msdn.microsoft.com/en-us/library/ cy8c7wz5.aspx – dashesy