Malloc et realloc de CString [Résolu]

Signaler
Messages postés
65
Date d'inscription
mercredi 19 juin 2002
Statut
Membre
Dernière intervention
9 mars 2008
-
cs_JCDjcd
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
-
Bonjour tout le monde,

J'ai un petit probleme de tableaux de structure dynamique, voici le code :

Struct TotoStruct {
CString niarf;
int etat;
} Toto*;

Toto = (TotoStruct*)malloc(sizeof(totoStruct));
Toto.niarf =" Hello";

Dès que j'essaie d'acceder à ma CString, ca plante (Acces Violation) normal que que Toto.niarf.m_pchData = 0xCDCDCDCD

Quelqu'un pourrait m'aider??? Merci

4 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
18
Travaille donc avec des char[LEN] en place des CString dans tes structures sinon tu ne sauras jamais longueur de struct etc...
CString passe son temps à allouer et désallouer.

ciao...
BruNews, MVP VC++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Le constructeur par défaut de CString n'est pas appelé de cette manière. Pourquoi tu n'utilise pas simplement une struture sans pointeur

typedef strcut _TotoStruct {
CString niarf;
int etat;
} TotoStruct;

TotoStruct Toto;
Toto.niarf = "Hello";
Messages postés
65
Date d'inscription
mercredi 19 juin 2002
Statut
Membre
Dernière intervention
9 mars 2008

Merci pour vos reponses, j'ai remplacé les CString par des char*, et ca marche NiCd (Nikel Chrome) :)

P.S.: Le fait d'uilider un pointeur me permet de redimensionner le tableau à volonté (sachant que le probleme etait un tableau fixe au départ :) ).

Merci encore et @+
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
2
Je me permet une petite remarque :
ici tout marche MiCd car "Hello" est une chaine deja mise en memoire, mais le jour ou tu voudrais mettre une chaine que tu ne connais pas a l'avance, fais attention de bien allouer de la memoire pour stocker des octets, c'est pourquoi l'on te suggere le char niarf[LEN_MAX] plutot que char *niarf

Pourquoi faire simple quand on peut faire compliqué ?