Question

J'essaie de surcharger l'opérateur global new et de le supprimer pour une application sensible aux performances. J'ai lu les problèmes décrits à l'adresse http://www.informit.com. /articles/article.aspx?p=30642&seqNum=3 et recommandations concernant l'utilisation de l'allocateur Intel TBB http://www.intel.com/technology/itj/2007/v11i4/5-foundations/5-memory.htm

Étant donné que je surcharge et que je supprime pour la première fois, j'ai quelques questions.

Devrais-je inclure mon nouvel en-tête Allocator.h (ou Pre.h) contenant la nouvelle fonction surchargée dans tous les fichiers contenant le mot-clé "nouveau"? appels? C'est fastidieux.

Ou devrais-je utiliser "gcc -include Allocator.h ..."? qui inclut Allocator.h (avant) dans chaque unité de traduction? Je veux garder la plate-forme de code indépendante autant que possible. Est-ce que tous les compilateurs supportent quelque chose d'analogue de "gcc -include"?

Était-ce utile?

La solution

Si vous souhaitez surcharger l'opérateur global, nouvel et l'opérateur delete , il vous suffit de l'implémenter. Vous n'avez pas besoin de le définir explicitement partout car il est déjà défini dans le langage.

Éditer: Si vous voulez définir un opérateur nouveau qui prend différents paramètres, vous devez alors # l'inclure partout. Quoi que vous fassiez, cela dépend de vous; c'est surtout une question de style.

Et n'oubliez pas de mettre en œuvre toutes les variantes de l'opérateur global new et delete: new , new [] , delete , < code> delete [] et les variantes std :: nothrow .

Autres conseils

Si vous utilisez Visual Studio et utilisez des en-têtes précompilés, vous pouvez y inclure l'inclusion. Je pense que gcc a également une forme d’en-tête de précompilation, ce qui améliorerait également votre temps de compilation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top