Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1509 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Est ce que ce bout de code génère une allocation ?

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Est ce que ce bout de code génère une allocation ?

n°1998015
snafu8
Posté le 01-06-2010 à 15:53:23  profilanswer
 

Salut à tous. J'ai une classe toto qui contient notamment un tableau et tout les trucs qui vont bien (Coplien, un opérateur [],etc...).
Je fais une fonction qui ressemble à ça :  
 

Code :
  1. Toto  mafonction(Toto & src)
  2. {
  3.      Toto dest(src.size());
  4.      for(int i = 0 ; i < src.size() ; ++i)
  5.            dest[i] = truc(src[i]);
  6. return dest;
  7. }


 
si je l'appelle comme ça :  
 

Code :
  1. /**/
  2. int size = 1000;
  3. Toto A (size);
  4. Toto B (size);
  5. /**/
  6. B = mafonction(A);
  7. /**/


 
Est ce que "dest" va être alloué ou pas?


Message édité par snafu8 le 01-06-2010 à 16:00:04
mood
Publicité
Posté le 01-06-2010 à 15:53:23  profilanswer
 

n°1998044
ptitchep
Posté le 01-06-2010 à 16:36:30  profilanswer
 

Salut,
 
Qu'est-ce que tu appelles une allocation? Une allocation dynamique? Dans ce cas non (sauf s'il y en a une dans le constructeur de Toto).
 
Un objet Toto est construit dans mafonction. Une copie est retournée qui est ensuite copiée dans B (le compilateur supprime surement une des copies).
 
Tu peux utiliser un debugger pour mettre un breakpoint dans tes constructeurs (normal et par copie) pour vérifier tout cela.


---------------
deluser --remove-home ptitchep
n°1998072
Joel F
Real men use unique_ptr
Posté le 01-06-2010 à 17:39:15  profilanswer
 

il va certainement etre élidé par le principe de Named Return Value Optimization:
 
http://cpp-next.com/archive/2009/0 [...] -by-value/
 
Je parle bien evidemment des compilos corrects :o

n°1998091
snafu8
Posté le 01-06-2010 à 18:33:51  profilanswer
 

Ok,
 
btw, par "compilo correct", tu veux dire "n'importe quel compilo sauf apple gcc 4.2"?

n°1998100
Joel F
Real men use unique_ptr
Posté le 01-06-2010 à 19:11:06  profilanswer
 

oui :€
en etant serieux, dans le lien que j'ai donné y a un petit ficheir qui compte les elisions. Donc recupére le et test sur gcc apple 4.crap

n°1998115
snafu8
Posté le 01-06-2010 à 20:28:40  profilanswer
 

Sache que tu as été mauvaise langue, mon compilo n'en manque qu'une. Je pense que ca va me plaire cette affaire. Apres avoir passé des années à apprendre comment pense un compilateur pour éviter de lui faire faire des copies inutiles, maintenant, je vais devoir désapprendre parce qu'il a appris à réfléchir comme moi.

n°1998207
Joel F
Real men use unique_ptr
Posté le 02-06-2010 à 06:48:24  profilanswer
 

bonne nouvelle donc.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Est ce que ce bout de code génère une allocation ?

 

Sujets relatifs
vba html code sourceTransformer un code hors ligne en mode en ligne
Problème dans les code HTML et CSScode vb avec BD sql
Cron qui s'arrête tout seul au bout de deux heures préciseGCC supprime du code à mon insu !?
Code C++ Pour tester un mémoire DDR2[Résolu] Lignes de code CSS venues de Saturne ?
protéger code MySQLEst ce que bout de code est exploitable ?
Plus de sujets relatifs à : Est ce que ce bout de code génère une allocation ?


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR