Accueil > Forum > > > > Problème avec delete
Problème avec delete
vendredi 19 mai 2006 à 11:29:17 |
Problème avec delete

juju12
|
Bonjour; L'extrait de code suivant(simplifié bien sûr) me cause problème :
class Class1 { };
int main(void) { Class1 n=*(new Class1); delete &n; return 0; }
La compilation est OK par contre l'exécution (en debug) me renvoie : "Debug Assertion Failed [...] _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)"
Je ne comprend absolument pas...
Merci de votre aide;
|
|
vendredi 19 mai 2006 à 12:21:08 |
Re : Problème avec delete

ymca2003
|
Class1* n =
new
Class1;
delete n;
|
|
vendredi 19 mai 2006 à 12:26:00 |
Re : Problème avec delete

vecchio56
|
&n est une adresse sur la pile, c'est donc normal que le delete échoue
En fait, n est une copie de l'objet créé sur le tas, tu ne peux donc pas lui appliquer delete
|
|
vendredi 19 mai 2006 à 12:27:29 |
Re : Problème avec delete

bouba
|
Class1 n=*(new Class1); // Ici tu déréférences, tu récupères "la valeur", l'opérateur = réalise donc une copie membre à membre mais tu perds la référence au pointeur retourné par new !!! delete &n; // Ici en fait cette instruction demande la désallocation de n, mais n n'est pas alloué dynamiquement, en sortant du main le prog essaira de désallouer une fois de plus n, en tout cas ce n'est nullement l'objet "new Class1" qui est pointé par &n !!!
Good Luck.
Bouba
|
|
vendredi 19 mai 2006 à 12:28:00 |
Re : Problème avec delete

bouba
|
Oups, en même temps !!!
|
|
vendredi 19 mai 2006 à 12:58:16 |
Re : Problème avec delete

juju12
|
Merci pour vos réponses, cela m'a aidé; Mais j'ai toujours un problème avec delete [] :
class T { protected: int*Ptr; public: T(){Ptr=new int[10];} ~T(){delete [] Ptr;} };
int main(void) { T a,b; a=b; return 0; }
Cela me renvoie la même erreur que précédemment, au niveau de la ligne a=b (lorsque le prog libère l'ancienne ressource de a je suppose);
|
|
vendredi 19 mai 2006 à 13:05:14 |
Re : Problème avec delete

bouba
|
Réponse acceptée !
Oui, c'est normal, l'opérateur = effectue une copie membre à membre, a la première ligne T a, b; tu créer 2 objets de type T avec chacun un pointeur sur un tableau de 10 éléments que tu a alloué dans le constructeur. Mais ensuite quand tu faits a=b, dans ton objet a tu perde le pointeur vers le tableau alloué à la construction de a puisque maintenant tu as dans a un poiteur vers le tableau de b (puisque égal fait une copie membre à membre). A la fin du main delete[] est donc appelé deux fois sur le même pointeur et le tableau initiale de l'objet à n'est pas détruit car tu a perdu le pointeur sur celui-ci. Solution: surcharger l'opérateur = pour que les éléments du tableau soient copié de b vers a est non les pointeurs.
Bonne chance, n'hésites pas à demander précisions si t'as un blem. Bouba
|
|
vendredi 19 mai 2006 à 13:08:47 |
Re : Problème avec delete

Zootella
|
a=b;
Si tu as des pointeurs dans la classe T, alors juste leurs valeurs est copiés. Fais une fonction Copy, qui va copier sur quoi pointe le pointeur Ptr.
|
|
vendredi 19 mai 2006 à 13:11:10 |
Re : Problème avec delete

juju12
|
Zootella-> je sais, c'était juste pour l'exemple (merci tout de même); bouba-> merci pour tes réponses ça devrait aller maintenant...
|
|
Cette discussion est classée dans : problème, debug, delete, class1
Répondre à ce message
Sujets en rapport avec ce message
Problème de compilation [ par lbs ]
Bonsoir,J'ai téléchargé les sources d'eMule (version officielle et version lsd). Je compile le tout et ca me met le message d'erreur suivant :------ D
Problème de delete [ par ManTico ]
Salut à tous, j'ai un peu de peine avec la gestion de la mémoire et je voulais savoir deux choses :- pourquoi en mode Debug mon prog plante sur les de
Problème avec delete [ par bibiteinfo ]
Bonjour, je suis en train de faire un chat. Je lance mon serveur si je connecte un client, j'ai cette ligne là qui se fait appeler :m_nomJoueur = CIn
Prob grave avec Visual... [ par Nuage ]
Voila, j'ai un grave problème avec le debug de Visual. Je fait un bête code source, avec une fonction pour créer un élement d'une pile, et une fonctio
Problème avec delete[] [ par gbourgeois0019 ]
SalutJ'ai un petit problème. voici le code :char* Temp = new char[100];char* Title = new char[100];strcpy(Temp,"Exemple");Title = Temp + 1 ;delete[] T
Problème de Debug et d'Execution(Compilation) [ par Maiku ]
SalutJe veux faire une Bibliothèque de Classe C++ sous Visual Studio.Net.J'ai donc Fait New Project / Class LibraryJe Commence mon projet mais quand j
TcpClient Debug -- No connection [ par pasteque ]
Salut, Mon application dispose d'un TcpClient de base : TcpClient* myTcpClient = new TcpClient("localhost",1200); Dans le debuggueur (en pas à pas),
Visual C++ sous vista [problème de debug] [ par bouks69 ]
bonjour,voila je viens de passer hier sous vista, afin de tester les divers outils de mon entreprise (vérifier le bon fonctionnement, etc...) et me su
Problème d'utilisation d'une static library, erreur LNK1276 [ par Servlax ]
Bonjour, je poste dans la partie "Divers / Débutant(s)" à défaut d'en avoir trouvé une plus adéquate. Excusez-moi par avance si je me trompe d'endroit
Débute - problème de build [ par mstarsup5 ]
Bonjour à tous,Je débute en C++, j'essaie d'apprendre les rudiments pour l'instant. J'ai quelques notions en C cela dit.Alors mon problème c'est que d
Livres en rapport
|
Derniers Blogs
SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|