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

 


Dernière réponse
Sujet : [c => C++] malloc => new
darkoli ok ...
 
ben merci bien les p'tit gars

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
darkoli ok ...
 
ben merci bien les p'tit gars
BENB tsr > non
ca donne  
Ttoto** toto = new (Ttoto*)[10];
for(int i=0; i<10;i++)
 toto[i] = new Ttoto[10];
 
 
...
 
...
 
for(int i=0;i<10;i++)
 delete [](toto[i]);
delete[] toto;
 
les [] sont pour l'allocation de tableaux...
LeGreg malloc se contente de reserver un espace memoire correspondant a ce que tu as trouve. C'est un fonction de librairie standard du C.(include malloc.h). son pendant est free qui libere simplement la memoire.
new va, en plus de reserver l'espace memoire pour l'objet ou la collection d'objets, appeler le constructeur de l'objet. C'est une instruction specifique du C++ et pas un appel de librairie.(pas de include a faire). Son pendant est delete qui appelle le destructeur de l'objet et libere la memoire.
 
usage:
MyClass *ptr = new MyClass(p0, .., pn);
// utilisation de ptr
delete ptr;
 
MyClass *array = new MyClass[taille];
// utilisation de l'array
delete[] array;
 
Ne pas oublier le []
et comme pour free, on ne libere pas les objets
du tableau individuellement mais tout en bloc.
 
A+
Legreg
tsr Ttoto** toto=(Ttoto**)NULL;  
toto=new (Ttoto**)[sizeof(Ttoto*)*10];  
for (int i=0;i<10;i++) {  
  toto[i]=new (Ttoto*)[sizeof(Ttoto)*10];  
  }  
 
...  
 
for (int i=0;i<10;i++) delete[](toto[i]);  
delete[](toto)
darkoli voila je programme en c/c++ mais j'utilise toujours malloc depuis des milliards d'années. Et je ne suis pas sur de tres bien utiliser new (je ne l'utilise pas en fait) .
 

Code :
  1. Ttoto** toto=(Ttoto**)NULL;
  2. toto=(Ttoto**)malloc(sizeof(Ttoto*)*10);
  3. for (int i=0;i<10;i++) {
  4.   toto[i]=(Ttoto*)malloc(sizeof(Ttoto)*10);
  5.   }
  6. ...
  7. for (int i=0;i<10;i++) free(toto[i]);
  8. free(toto)


 
qu'est ce que ca donne en utilisant new et dispose à la place de malloc et free ?
 :(


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)