Überschreiben globaler Operatoren: Ersetzen von Neu- und Löschoperatoren
In einer komplexen Codebasis kann es eine Herausforderung sein, die konsistente Verwendung benutzerdefinierter Neu- und Löschoperatoren sicherzustellen. Ein Problem besteht darin, dass externe Bibliotheken und die STL-Nutzung möglicherweise die benutzerdefinierte Speicherverwaltung umgehen.
Anstatt Überladungen in mehrere Dateien einzubeziehen, kann eine globale Ersetzung erreicht werden. Verknüpfen Sie eine separate Übersetzungseinheit (TU), die diese Operatoren definiert. Diese TU bietet folgende Funktionen:
<code class="cpp">void * operator new(std::size_t n) throw(std::bad_alloc); void operator delete(void * p) throw();</code>
Einschließlich
<code class="cpp">void * operator new(decltype(sizeof(0)) n) noexcept(false);</code>
Durch die Verknüpfung dieser TU werden die benutzerdefinierten Operatoren new und delete durchgehend aktiv das Programm, wodurch eine konsistente Nutzung und verbesserte Diagnosemöglichkeiten gewährleistet werden.
Das obige ist der detaillierte Inhalt vonWie kann ich die globalen Operatoren „new' und „delete' in C überschreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!