Frage

Ich versuche, den globalen Betreiber neu zu überladen und für eine leistungssensible Anwendung zu löschen. Ich habe die Bedenken gelesen, die beschrieben wurden http://www.informit.com/articles/article.aspx?p=30642&seqnum=3 und die Empfehlungen zur Verwendung von Intel TBBs Allocator http://www.intel.com/technology/itj/2007/v11i4/5-Foundations/5-memory.htm

Da ich zum ersten Mal neu überlaste und zum ersten Mal lösche, habe ich ein paar Fragen.

Sollte ich meinen neuen Header -Allocator (oder Pre.h) einschließen, der die überladene neue Funktion in allen Dateien enthält, die "neue" Anrufe enthalten? Das ist mühsam.

Oder sollte ich "GCC -Include Allocator.H ..." verwenden, der Allocator.h (vor) in jede Übersetzungseinheit enthält? Ich möchte die Codeplattform so weit wie möglich unabhängig halten. Unterstützen alle Compiler etwas Analoges zu "GCC -include"?

War es hilfreich?

Lösung

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

Bearbeiten: Wenn Sie einen Operator neu definieren möchten, der unterschiedliche Parameter erfordert, müssen Sie es überall #Include. Wie auch immer Sie das tun, liegt bei Ihnen; Es ist meistens eine Frage des Stils.

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

Andere Tipps

Wenn Sie Visual Studio verwenden und vorkompilierte Header verwenden, können Sie das inklusive dort einwerfen. Ich denke, GCC hat auch irgendeine Form von Vorkompeten -Headern, die auch Ihre Zusammenstellungszeiten verbessern würden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top