Accueil > Forum > > > > char* dans un destructeur
char* dans un destructeur
mardi 10 février 2009 à 15:25:26 |
char* dans un destructeur

pepsidrinker
|
Premierement, merci de lire ce post, et merci a tous ceux qui veulent maider. Jai le probleme suivant: Jassigne des char* avec 'new[]' dans le constructeur d'une classe, et je les free avec un 'delete[]' dans le destructeur. le probleme, c'est que sa plante au destructeur, et que les pointeurs sont bel et bien initalizer, et le error-chjecking autour aussi. Voici mon code: ------------------------ #include "Core.h" class ClEmployee:public ClDBCoreObject { public: ClEmployee(int pi_id,ClSQL* pi_sql); ClEmployee(); ~ClEmployee(); bool Refresh(); void FreeMembers(); void AllocateMembers(); char* firstName; char* lastName; char* email; char* role; char* telephone; char* extension; }; ClEmployee::~ClEmployee() { FreeMembers(); } void ClEmployee::FreeMembers() { if(firstName!=NULL) delete [] firstName; if(lastName!=NULL) delete [] lastName; if(email!=NULL) delete [] email; if(role!=NULL) delete [] role; if(telephone!=NULL) delete [] telephone; if(extension!=NULL) delete [] extension; } void ClEmployee::AllocateMembers() { firstName = new char[HALF_MAX_SQL_BUFFER_SIZE]; lastName = new char[HALF_MAX_SQL_BUFFER_SIZE]; email = new char[HALF_MAX_SQL_BUFFER_SIZE]; role = new char[HALF_MAX_SQL_BUFFER_SIZE]; telephone = new char[QUARTER_MAX_SQL_BUFFER_SIZE]; extension = new char[QUARTER_MAX_SQL_BUFFER_SIZE]; if (!firstName || !lastName || !email || !role || !telephone || !extension) { Log("Not enough memory to allocate for buffer(s)\n"); } } ClEmployee::ClEmployee() {} ClEmployee::ClEmployee(int pi_id,ClSQL* pi_sql) { if(pi_id <0) return; id = pi_id; if(!pi_sql) return; sql = pi_sql; firstName = NULL; lastName = NULL; email = NULL; role = NULL; telephone = NULL; extension = NULL; AllocateMembers(); Refresh(); } bool ClEmployee::Refresh() { if (!firstName || !lastName || !email || !role || !telephone || !extension) { Log("Buffer(s) not initialized or not enough memory\n"); return false; } if(!sql->IsConnected()) { Log("SQL connection not connected\n"); return false; } ASSOC_ARRAY buffer; if(!sql->Query("select * from employees",&buffer)) { Log("Internal SQL error\n"); return false; } for(int i=0;i < buffer.num_rows(); ++i) { strcpy( firstName,buffer[i]["firstName"]); strcpy( lastName,buffer[i]["lastName"]); strcpy( email,buffer[i]["email"]); strcpy( role,buffer[i]["role"]); strcpy( telephone,buffer[i]["telephone"]); strcpy( extension,buffer[i]["extension"]); } } ---------------- Le programe compile bien, mais une fois executer et detruit, sa plante... Le fichier main.cpp fait une simple declaration 'static' de la classe et lui passe les arguments. Quand je met en commentaire 'FreeMembers()' du destructeur, la classe roule nickel. Se pourrait-il que le destructeur detruise automatiquement les char* allocater dynamiquement? Encore une fois merci.
|
|
mardi 10 février 2009 à 15:26:23 |
Re : char* dans un destructeur

pepsidrinker
|
vrmt desoler pour le formatage... si je px faire kkchose pour sa, laisse moi le savoir. je ne vois pas de tag null part...
|
|
mardi 10 février 2009 à 15:31:32 |
Re : char* dans un destructeur

Pistol_Pete
|
Salut Oui effectivement là c'est illisible. Essaye de copier coller ton code depuis un autre éditeur de texte. (notepad par ex) A+ ____________________________________________________________________________ Mon site internet : [ Lien ]
|
|
mardi 10 février 2009 à 15:37:28 |
Re : char* dans un destructeur

ed73
|
Bon c'est pas très lisible mais ta classe parait correcte. Le problème vient peut-être du fait que tu invoques plusieurs fois la méthode FreeMember en amont. Essayes déjà : if(firstName!=NULL) { delete [] firstName; firstName = NULL; }
au moins ça ne plantera plus.
|
|
mardi 10 février 2009 à 15:38:43 |
Re : char* dans un destructeur

buno
|
Hello, Je vois ptet quelqque chose qui pourrait causer le problème: dans ton destructeur, après chaque delete, penses bien à mettre tes pointeurs à NULL
@+ Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
mardi 10 février 2009 à 15:44:07 |
Re : char* dans un destructeur

pepsidrinker
|
Jai changer le code pour ceci: --- void ClEmployee::FreeMembers() { if(firstName!=NULL) { delete [] firstName; firstName=NULL; } if(lastName!=NULL) { delete [] lastName; lastName=NULL; } if(email!=NULL) { delete [] email; email=NULL; } if(role!=NULL) { delete [] role; role=NULL; } if(telephone!=NULL) { delete [] telephone; telephone=NULL; } if(extension!=NULL) { delete [] extension; extension=NULL; } } malgee vont bon conseils, sa ne fonctionne tjrs pas...
|
|
mardi 10 février 2009 à 16:20:22 |
Re : char* dans un destructeur

Pistol_Pete
|
Le destructeur ne détruit pas les char allouer dynamiquement. Puisque c'est à la destruction de char* que ce produit le crash, cela signifie que ta variable est corrompue. Il faut que tu vérifies partout que tu ne sort pas de ton tableau. A+ ____________________________________________________________________________ Mon site internet : [ Lien ]
|
|
mardi 10 février 2009 à 17:01:07 |
Re : char* dans un destructeur

pepsidrinker
|
Jai realizer que le probleme semble venir de deleter 'email' et 'role' dans le destructeur. Je ne sais pas pourquoi, mais je vais continuer mon investigation...Je vous laisserai savoir le resultat si je trouve!
|
|
Cette discussion est classée dans : buffer, sql, char, if, clemployee
Répondre à ce message
Sujets en rapport avec ce message
analyseur lexical pascal [ par perrotta ]
Bonjour, dsl pour ma langue je parle pas bien le français; je suis entrin de devlopper un analyseur lexical pour un programme (pascal) prèci ,et j'ai
Probleme wsock protocole HTTP [ par Target67 ]
Alors je veux faire une petite appli qui permet de télécharger des fichiers sur le net suivant le protocole HTTP dont voici le code de la partie qui v
Suppression de caractères d'un gros fichier texte [ par mslider ]
--Bonjour, c'est juste pour une petite aide. J'ai utilisé un code qui avait été mis au point à l'origine pour faire du cross-table(tableau croisé, vo
cryptage de cesar sur c++ [ par juniordiaw ]
bjr a tous g un problemea vec mon code o faite lorske g rentre un letre il me la crypte mai sil sagi dun mo ou dune phrase il ne crypte ke la premiere
char [10] dans char [16][10] [ par Stutu ]
Bonjour à tous, Je m'explique j'ai un char buffer[10] que je voudrais mettre dans un char temp[16][10] car je vais devoir mettre 16 fois buffer[10] d
probleme avec une chaine de caractere [ par joben22 ]
Bonsoir, j'ai un petit soucis avec une fonction que j'essaie de coder. En fait, je lis le contenue d'un fichier, le place dans un char* et la j'aimer
La mémoire ne peut pas être "written" [ par Nao13090 ]
Bonjour à tous ! Dans le cadre de mon projet de gestion de tournoi, j'ai créer via Qt une fenêtre visant à éditer les participants ajoutés au préala
fread & fwrite [ par mosted ]
Bonjour, Etant débutant , j'ai un soucis avec un code à faire pour l'école. Nous devons lire des structures d'un fichier binaire. Voici mon code [c
Probleme de Malloc sur un char ** [ par tomy46 ]
Bonjour a tous, Avant tout, désole pour les accents (sauf ceux repris par la correction orthographique) mais je suis sur qwerty ... Bon voici mon pr
lire un fichier sql pour mettre à jour une base access [ par sandrank ]
bonjour,je débute en C et j'espère que quelqu'un va pouvoir m'aider :je dois mettre à jour une base de données access à partir d'un fichier sql de ce
Livres en rapport
|
Derniers Blogs
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 [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
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 COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.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 LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|