Problème tableau structure

Résolu
romauto750 Messages postés 46 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 12 janvier 2012 - 9 avril 2008 à 17:06
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 9 avril 2008 à 20:18
Bonjour à tous,



J'ai un petit problème avec mon tableau de structure.



Voici ma structure dans mon .h :



typedef struct {



      CString Pays;

      CString Ville;

      CString Rue;

      CString NumRue;

      CString CP;

      CString ID;


}STRUCT_INFOS ;






et dans mon .cpp j'ai :



STRUCT_INFOS *pstruct_INFOS = NULL;



pstruct_INFOS = (STRUCT_INFOS *)malloc(1000 * sizeof(STRUCT_INFOS));



if(pstruct_INFOS == NULL ) AfxMessageBox("pb malloc structure");








-- et dans une boucle j'ai



pstructAF_INFOS[i].ID = "test"; // i étant incrémenté à chaque passage




 



mais voila cela ne marche pas et j'ai comme erreur :



Exception non gérée à 0x7c176d5c (mfc71d.dll) dans MonProjet.exe:0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0xcdcdcdc9.



Pouvez-vous m'aider ??



Merci d'avance

10 réponses

romauto750 Messages postés 46 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 12 janvier 2012
9 avril 2008 à 17:37
Avant, dès la 1ère fois.

Quand je remplace CString dans ma structure par un char ID[5] par exemple et dans mon .cpp si je fait un strcpy(pstruct_INFOS[i].ID , "test") là ca marche alors pourquoi cela ne marche pas avec les CString, si quelqu'un pouvait m'expliquer le problème.
3
romauto750 Messages postés 46 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 12 janvier 2012
9 avril 2008 à 17:12
J'ai oublié de préciser que je dois faire un malloc pour l'allocation car dans ma boucle quand i à atteint 1000 je dois faire un réalloc de 1000 en plus.
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
9 avril 2008 à 17:34
Salut,
Ca plante quand i atteint 1000? ou avant?

Neo_Fr
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
9 avril 2008 à 17:48
Pourquoi veut tu utiliser les CString?

Neo_Fr
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
romauto750 Messages postés 46 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 12 janvier 2012
9 avril 2008 à 17:58
On ma conseillé de les utiliser pour plus de simplicité parait-il   (cela ne fait pas longtemps que j'ai débuté le C++ alors je sais pas trop) enfin sinon j'ai gardé mes char et mon strcpy qui marche très bien mais maintenant j'aurais une autre question.

La j'ai rempli mon tableau de structure mais plus tard dans une autre fonction je dois récupérer ces informations mais je n'y arrive pas, j'ai testé en donnant l'adresse de mon pointeur de ma structure mais cela ne marche pas, quelqu'un sait ??

Merci d'avance
0
Neo_Fr Messages postés 653 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 10 novembre 2014 2
9 avril 2008 à 18:01
Remplace le . par ->
Ex:
void __stdcall ShowID(STRUCT_INFOS* psInfos)
{
MessageBox(0, psInfos->ID, 0, 0x40);
}

Neo_Fr
0
romauto750 Messages postés 46 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 12 janvier 2012
9 avril 2008 à 18:10
J'ai trouvé, en fait j'avais laissé le free(...) avant de lire ma structure alors c'est sur que ça pouvait pas marcher ^^ .

Merci quand même.

Bonne soirée.
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 4
9 avril 2008 à 19:23
Salut,

Une structure avec des CString faut l'allouer obligatoirement avec new
et surtout pas avec malloc, sinon les constructeurs des CString seront
jamais appelés.
0
romauto750 Messages postés 46 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 12 janvier 2012
9 avril 2008 à 19:49
Ahh ok je comprend mieux mtn :)
Merci bien
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
9 avril 2008 à 20:18
C'est valable pour toute classe, que soit CString ou autre, toujours new et jamais de malloc.

ciao...
BruNews, MVP VC++
0