cs_tintin72
Messages postés122Date d'inscriptionmercredi 16 avril 2003StatutMembreDernière intervention22 juillet 2006
-
1 juin 2005 à 20:24
cs_tintin72
Messages postés122Date d'inscriptionmercredi 16 avril 2003StatutMembreDernière intervention22 juillet 2006
-
2 juin 2005 à 08:17
Bonjour,
Je cherche à initialiser un tableau de caractères (contenu dans une classe) de façon dynamique.
J'ai donc écris le code suivant :
class Coord
{
public :
char *m_Nom;
//autres données...
};
int main(int argc, char *argv[])
{
char *pConteneur = new char[100];
cout<<"Entrez votre nom :"<<endl;
gets(pConteneur);
longueur = strlen(pConteneur);
Coord personne;
personne.m_Nom = new char[longueur + 1]; //allocation de mémoire
for(int i = 0; i < longueur; i++) //initialisation
{
personne.m_Nom[i] = *(pConteneur + i);
}
cout<
Le code fonctionne, toutefois ne l'ayant pas testé dans toutes les contextes possibles je voudrais savoir :
1) si l'allocation et la désallocation de mémoire du membre m_Nom sont correctes ?
2) si l'initialisation de ce membre est correcte ?
3) Est il possible d'utiliser ce code sans risquer un plantage (à cause des nombreux pointeurs) ou d'autres problèmes plus subtiles.
cs_poppyto
Messages postés540Date d'inscriptiondimanche 29 décembre 2002StatutModérateurDernière intervention13 mai 2011 1 juin 2005 à 20:51
Sisi on doit pouvoir avec un vecteur...
Bon en admettant les 100 caractères, voilà ma correction ^^
1.Version marrante
int main(int argc, char *argv[])
{
Coord personne;
personne.m_Nom = new char[100];
cout<<"Entrez votre nom :"<<endl;
gets(personne.m_Nom);
cout<
2.Plus approprié pour ton souci
int main(int argc, char *argv[])
{
char *pConteneur = new char[100];
cout<<"Entrez votre nom :"<<endl;
gets(pConteneur);
//longueur = strlen(pConteneur);
//Coord personne;
//personne.m_Nom = new char[longueur + 1]; //allocation de mémoire
//for(int i = 0; i < longueur; i++) //initialisation
//{
// personne.m_Nom[i] = *(pConteneur + i);
///}
//
// Tout cette partie au dessu est sans intéret
// à remplacer par
personne.m_Nom = new char[strlen(pConteneur)+ 1];
strcpy(personne.m_Nom,pConteneur);
cs_poppyto
Messages postés540Date d'inscriptiondimanche 29 décembre 2002StatutModérateurDernière intervention13 mai 2011 1 juin 2005 à 23:31
Tu en sais déjà trop ! Tu verras les vecteurs plus tard, après avoir passé les premières étapes.
Je dis pas ça pour t'embêter mais trop d'infos en même temps, c'est perturbant quand on débute.
Dis toi que le vecteur est un tableau magique où tu peux ranger tout et n'importe quoi, et qu'il s'agrandit au fur et à mesure sans que tu n'ai besoin de manipuler la mémoire.