assertion failure pour newbie - Programmation
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 :
|
par
Code :
|
[jfdsdjhfuetppo]--Message édité par deathsharp--[/jfdsdjhfuetppo]
Marsh Posté le 16-02-2002 à 20:52:38
ta pas fait du vb avant par hasard?
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...
Marsh Posté le 16-02-2002 à 21:03:04
si ca passe c que le compilo c'etait de la merde
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));
Marsh Posté le 16-02-2002 à 21:13:11
j'aime pas cette syntaxe
mais c vrai j'ai pas fait gaffe
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
PS : desole d'avoir pollué le phorum en creant de nouveaux sujets au lieu de repondre
je le maitrise pas non plus...
m je suis qu'un newbie hein ... !
merci pour tout et @+
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>
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 ...
Marsh Posté le 16-02-2002 à 22:06:02
lib c++ standart
#include <string> si souvenir bon
moi je l'utilise pas trop
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;
}