GNT sans publicité, site mobile, fonctionnalitées exclusives...

surcharge de l'operateur new

Le
Dezz
Bonjour,

je commence à jeter un coup d'oeil à la surcharge de l'opérateur new (en
tant qu'opérateur de classe).

Et j'avoue qu'à part d'interdire l'allocation dans le tas et gérer les
problémes de mémoire, je n'ai pas trouvé d'autres utilités.
Quelqu'un peut-il me donner d'autres raisons de surcharger cet opérateur ?
Y a-t-il des exemples où la surcharge de cet opérateur est utilisé ?

Merci,
Dezz
Lire les 2 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
kanze
Le #273727
Dezz wrote:

je commence à jeter un coup d'oeil à la surcharge de
l'opérateur new (en tant qu'opérateur de classe).

Et j'avoue qu'à part d'interdire l'allocation dans le tas et
gérer les problémes de mémoire, je n'ai pas trouvé d'autres
utilités. Quelqu'un peut-il me donner d'autres raisons de
surcharger cet opérateur ? Y a-t-il des exemples où la
surcharge de cet opérateur est utilisé ?


La plupart du temps, c'est pour donner un allocateur optimisé au
type. Si la taille de l'allocation est constante et connue
d'avance, on peut faire beaucoup mieux que les allocateurs plus
générique.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Brieuc Jeunhomme
Le #273726
Quelqu'un peut-il me donner d'autres raisons de
surcharger cet opérateur ? Y a-t-il des exemples où la
surcharge de cet opérateur est utilisé ?


La plupart du temps, c'est pour donner un allocateur optimisé au
type. Si la taille de l'allocation est constante et connue
d'avance, on peut faire beaucoup mieux que les allocateurs plus
générique.


Je m'en sers aussi pour deux autres raisons: la première, c'est pour
remplacer l'allocateur par quelque chose dont je connais le
fonctionnement, et dont je me sers d'une manière un peu crade pour
faire un garbage collector, la deuxième, c'est dans un programme multi
process, pour dire que les objets d'une certaine classe doivent
toujours être alloués en shared memory, tout simplement en la dérivant
d'une classe dont j'ai surchargé le new.

Ça peut servir en debug, pour avoir des traces de toutes les allocations
quand on est à la recherche de la mémoire perdue, bien qu'il y ait des
outils plus efficaces pour ça.

On pourrait aussi imaginer, bien que ce soit tordu, de se servir de
cette technique pour écrire dans un fichier mappé en mémoire, par
exemple si on doit y mettre plusieurs structures se suivant les unes
les autres.

Dernier exemple, si on veut par exemple lire un mot de passe et qu'on
veut la garantie que l'OS ne le swappera pas, on peut vouloir allouer
de la mémoire d'une manière particulière.

--
BBP


Publicité
Suivre les réponses
Poster une réponse
Anonyme