bonjour,
quelle est la différence entre:
etCode:
1
2
3 double *gg=new double[3]; delete[1] gg;
MercoCode:
1
2 double *gg=new double[3]; delete gg;
Version imprimable
bonjour,
quelle est la différence entre:
etCode:
1
2
3 double *gg=new double[3]; delete[1] gg;
MercoCode:
1
2 double *gg=new double[3]; delete gg;
c'est un pointeur sur un tableau de double ,a mon avis c'est ce que tu dois ecrire :
Code:delete[] gg;
delete[] est l'opérateur associé à new[]
delete est l'opérateur associé à new
c'est tout.
alors pouquoi tu alloue avec new [] et tu veux utiliser delete ? et c'est quoi la delete[1] ,j'ai jamais vue !
euh jsuis pas le PO moi hein ^^
ohhhh :lol: desolé !
Appeler delete sur de la mémoire allouée avec new[] c'est un comportement indéfini.
Salut,
Normalement, delete est associé à new et delete[] est associé à new[].
Il faut être conscient que tu ne peux normalement pas libérer avec delete de la mémoire allouée avec new[] ni l'inverse.
Il faut aussi être conscient que, si tu alloue de la mémorie pour x objets (avec new) tu ne peux libérer que la mémoire allouée pour les x objets en question, et qu'il t'est interdit de libérer la mémoire allouée, par exemple au deuxième ou au troisième ;)
Il s'agit d'être particulièrement attentif à ces différents points car il peut arriver que le compilateur ne remarque pas que tu ne libères pas correctement ta mémoire, avec pour résultat une corruption des données qui est de nature à te faire foncer de manière systématique (même si cela peut prendre du temps) dans le mur.
Enfin, il faut savoir que le C++ fournit énormément de possibilités bien plus simples et sécurisantes à l'emploi qui sont de nature à t'éviter de devoir recourir à l'allocation dynamique, qui peut être restreinte à des besoins très particuliers (polymorphisme et singleton pour les cas les plus fréquents, même s'il y en a d'autres)...
Le meilleur conseil que l'on puisse donc donner est de s'intéresser très rapidement et de très près aux conteneurs fournis par le standard (vector, stack, queue, dequeue, list, set, map etc.) pour la gestion de collections d'objets.
Tu trouvera un schéma de décision du meilleur conteneur à utiliser dans l'entrée de la faq qui est consacrée au sujet ;)