[c => C++] malloc => new

malloc => new [c => C++] - Programmation

Marsh Posté le 24-04-2001 à 16:47:48    

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 ?
 :(

Reply

Marsh Posté le 24-04-2001 à 16:47:48   

Reply

Marsh Posté le 24-04-2001 à 16:59:53    

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)

Reply

Marsh Posté le 24-04-2001 à 17:04:32    

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

Reply

Marsh Posté le 24-04-2001 à 17:06:49    

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...

Reply

Marsh Posté le 24-04-2001 à 17:29:53    

ok ...
 
ben merci bien les p'tit gars

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed