malloc => new [c => C++] - Programmation
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)
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
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...
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) .
qu'est ce que ca donne en utilisant new et dispose à la place de malloc et free ?