assertion failure pour newbie

assertion failure pour newbie - Programmation

Marsh Posté le 16-02-2002 à 20:44:31    

voila, j'ai pondu le code suivant qui provoque une assertion failure (boite de dialogue qui apparait) sous visual C++ et je ne comprend pas pkoi...
HELP !!!
 
#include <iostream.h>
#include <string.h>
 
#include "fonctions.h"
//#include "record.cpp"
 
struct record {
 int number;
 char *name;
};
 
int main(void){
 record entree;
 char nom[20];
 
 cout << "nombre de l'entrée ? " << endl;
 cin >> entree.number;
 
 cout << "nom de l'entrée ? " << endl;
 cin >> nom;
 
 entree.name = new (char[strlen(nom)]);
 entree.name = nom;
 
 cout << "entree : " << entree.name << " " << entree.number << endl;
 
 delete[]entree.name;
 
 return 0;
}

Reply

Marsh Posté le 16-02-2002 à 20:44:31   

Reply

Marsh Posté le 16-02-2002 à 20:51:37    

parce que t'essaye de delete nom et que la mem aloue a entree.name ne sera pas detruit.
 
tu remplace  

Code :
  1. entree.name = nom;

 
 
par  

Code :
  1. strcpy( entree.name, nom );

 

[jfdsdjhfuetppo]--Message édité par deathsharp--[/jfdsdjhfuetppo]


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 16-02-2002 à 20:52:38    

ta pas fait du vb avant par hasard? :D


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 16-02-2002 à 20:56:56    

oki je vais essayer...
 
mais c'est marrant, le même code était passé sans pb sous unix (utilisation de gpp)...
soit j'ai eu de la chance, soit le compilateur était plus permissif...
 
ceci dit avec les pointeurs on ne sait jamais...
 
en tout cas merci...

Reply

Marsh Posté le 16-02-2002 à 21:03:04    

si ca passe c que le compilo c'etait de la merde :D


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 16-02-2002 à 21:09:38    

ps:
 
c'est pas bon,  
faut pas oublier le 0 terminal ds une string c
 
entree.name = strcpy(new char[strlen(nom)+1], nom));

Reply

Marsh Posté le 16-02-2002 à 21:13:11    

j'aime pas cette syntaxe :heink:
mais c vrai j'ai pas fait gaffe


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Marsh Posté le 16-02-2002 à 21:14:19    

quel con !!!
j'ai effectivement dejà produit ce bug....
il faut penser à allouer la longueur du string + 1 puisque la fonction strlen ne compte pas le \n...
 
je tente et je ne vous embête plus si ca marche  :ange:  
 
PS : desole d'avoir pollué le phorum en creant de nouveaux sujets au lieu de repondre  :sleep:  
 
je le maitrise pas non plus...  
m je suis qu'un newbie hein ... !
 :bounce:  
 
merci pour tout et @+

Reply

Marsh Posté le 16-02-2002 à 21:23:50    

Re Ps: puisque apparament tu t'est mis au C++, autant laisser tomber les chaines de caracteres C et les remplacer avantageusement par les string de la STL. Plus besoin de te faire chier avec les strcpy et les 0 terminals &co.
 
Re PS 2: qd tu fais un include d'un header de la STL, utilise plutot #include <iostream> à la place de #include <iostream.h>

Reply

Marsh Posté le 16-02-2002 à 21:27:28    

les string de STL ?
 
c'est une classe String, un peu comme la classe String de java ?
elle est ds la librerie standard installée avec visual ?
 
ok je prend note !!!! merci
 
je crois que je vais revenir de temps en temps moa ... :spookie:

Reply

Marsh Posté le 16-02-2002 à 21:27:28   

Reply

Marsh Posté le 16-02-2002 à 22:06:02    

lib c++ standart
 
#include <string> si souvenir bon
 
moi je l'utilise pas trop


---------------
What butter and whiskey won't cure, there is no cure for.
Reply

Sujets relatifs:

Leave a Replay

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