Überladen des globalen Operators new / delete in C ++

8

Ich versuche, den globalen Operator neu zu laden und für eine leistungsabhängige Anwendung zu löschen. Ich habe die in Ссылка beschriebenen Bedenken und die Empfehlungen zur Verwendung des Zuweisers von Intel TBB gelesen Ссылка

Da ich zum ersten Mal neu überladen und löschen möchte, habe ich ein paar Fragen.

Sollte ich meinen neuen Header Allocator.h (oder Pre.h) mit der überladenen neuen Funktion in alle Dateien mit "neuen" Anrufen aufnehmen? Das ist mühsam.

Oder soll ich "gcc -include Allocator.h ..." verwenden, das Allocator.h (vorher) in jede Übersetzungseinheit einbezieht? Ich möchte die Code-Plattform so weit wie möglich unabhängig halten. Unterstützen alle Compiler etwas analog zu "gcc -include"?

    
amit_grepclub 12.03.2009, 17:34
quelle

2 Antworten

14

Wenn Sie das globale operator new und operator delete überladen wollen, müssen Sie es nur implementieren. Sie müssen es nicht überall explizit definieren, da es bereits als Teil der Sprache definiert ist.

Bearbeiten: Wenn Sie einen neuen Operator definieren möchten, der andere Parameter annimmt, müssen Sie ihn überall einfügen. Wie auch immer du das tust, liegt ganz bei dir. es ist meistens eine Frage des Stils.

Und vergessen Sie nicht, alle Varianten des globalen Operators neu zu implementieren und zu löschen: new , new[] , delete , delete[] und% std::nothrow .

    
MSN 12.03.2009, 17:40
quelle
2

Wenn Sie Visual Studio verwenden und vorkompilierte Header verwenden, können Sie das Include dort einfügen. Ich denke, gcc hat auch eine Form von Vorkompilierungs-Headern, was auch Ihre Kompilierungszeiten verbessern würde.

    
wchung 12.03.2009 17:41
quelle

Tags und Links