Quel nouveau type de fonctionnalités (pour le débogage ou non) trouvez-vous utile en surchargeant le nouvel opérateur?Quelles sont les fonctionnalités utiles qui vous permettent de passer outre le 'nouvel' opérateur?
Quelles sont les fonctionnalités utiles qui vous permettent de passer outre le 'nouvel' opérateur?
Répondre
La principale raison pour laquelle j'ai dû surcharger new
a été pour la performance. Un exemple est l'allocation d'un grand nombre de petits objets, ce qui est souvent assez lent avec un allocateur général, mais peut souvent être amélioré avec un allocateur personnalisé.
Eh bien, la gestion de la mémoire personnalisée et le débogage. C'est à peu près tout, et tout ce que vous pouvez en tirer aussi.
Vous développez peut-être une bibliothèque qui nécessite une étape supplémentaire dans l'initialisation de certains objets, la surcharge vous permet de le faire sans certains appels supplémentaires maladroits que l'utilisateur finirait par devoir taper.
Si vous travaillez avec SSE/SIMD, vous devez généralement votre mémoire à 4 mots-alignés, donc vous pouvez surcharger new
pour les classes concernées à utiliser memalign()
(alors que la valeur par défaut est new
faire quelque chose d'équivalent à la plaine malloc()
).
Il y a beaucoup de cas où l'opérateur nouveau doit être remplacé. Comme quelqu'un l'a dit, c'est principalement pour la gestion de la mémoire personnalisée.
Le principal exemple que j'ai personnellement traité concernait les systèmes embarqués.
Dans un système embarqué, l'allocation de mémoire dynamique est généralement un problème. Même si vous avez un système d'exploitation embarqué qui le supporte, vous avez toutes sortes de problèmes que vous pourriez avoir à traiter (par exemple, les systèmes embarqués doivent souvent être plus déterministes que leurs homologues PC. c'est supposé être en place pendant des années à la fois, auquel cas la fragmentation de la mémoire est un vrai problème). Pour cette raison, les systèmes embarqués ont tendance à interdire complètement l'allocation de mémoire dynamique. Bien sûr, dans la plupart des projets logiciels, vous avez besoin d'une forme de mémoire dynamique, et dans ce cas, vous implémentez généralement la vôtre (c'est-à-dire, ayez une sorte de mémoire que tous les threads peuvent demander, etc.).
Pour que les projets C++ utilisent cette allocation de mémoire dynamique laminée à la main de la manière la plus simple possible, j'ai vu des projets écraser operator new pour utiliser la méthode d'allocation du projet.
- 1. Quelles sont les meilleures fonctionnalités de Scala?
- 2. Quelles sont les fonctionnalités utiles d'Emacs pour le développement de Rails
- 3. Quelles sont les fonctionnalités cachées de Maven2?
- 4. Quelles sont les nouvelles fonctionnalités d'Eclipse Helios?
- 5. Quelles sont les touches de raccourci utiles dans Visual Studio?
- 6. Quelles sont les bibliothèques de graphiques javascript qui permettent de tracer les prix des actions?
- 7. Quelles sont toutes les nouvelles fonctionnalités de asp.net 4.0.?
- 8. Quelles sont les fonctions utiles pour dessiner du texte (MFC)?
- 9. Quelles sont les fonctionnalités de C++ 0x qui resteront à coup sûr (le cas échéant)?
- 10. Dans quelles instances les arbres d'expressions sont-ils utiles?
- 11. Quelles sont les caractéristiques d'un nouvel environnement/API qui vous incitent le plus à commencer à jouer avec?
- 12. Quelles sont les fonctionnalités de sécurité disponibles dans Struts?
- 13. Les fonctionnalités de suivi de projet de TFS sont-elles utiles?
- 14. Quelles sont les nouvelles fonctionnalités du navigateur disponibles aujourd'hui?
- 15. Quelles sont les fonctionnalités majeures introduites par php5?
- 16. Fonctionnalités moins connues mais utiles dans Eclipse
- 17. Quelles sont les fonctionnalités pilotées par l'IA que vous aimeriez voir dans un IDE?
- 18. déterminer les fonctionnalités SharePoint qui sont réellement utilisées
- 19. Quelles sont les bonnes raisons de passer à jQuery 1.4
- 20. Quelles données/fonctionnalités souhaitez-vous avoir via une API Web qui n'est pas disponible aujourd'hui?
- 21. De quelles fonctionnalités de CMS avez-vous besoin dans Rails?
- 22. Quelles sont toutes les fonctionnalités en attente qui ne peuvent être obtenues par sujet?
- 23. méthode Finaliser pas le droit de passer outre
- 24. Quelles fonctionnalités de WPF sont exclues dans Silverlight 3?
- 25. Quelles mesures sont les plus utiles dans un serveur de construction ASP .Net?
- 26. Quelles sont les API qui permettent à Nokia for Sound de transformer du texte et du texte en sons?
- 27. Quelles sont les fonctionnalités les meilleures/les plus stables de la bibliothèque Google Closure
- 28. django ligne admin Formset passer outre sauver
- 29. testng, l'annotation « beforeTestMethod » et passer outre
- 30. rails - comment passer outre les vues par défaut