Malloc et realloc de CString

Résolu
clem0338 Messages postés 65 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 9 mars 2008 - 13 juil. 2005 à 13:06
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 - 13 juil. 2005 à 16:42
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 juil. 2005 à 14:01
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++
3
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
13 juil. 2005 à 14:17
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";
0
clem0338 Messages postés 65 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 9 mars 2008
13 juil. 2005 à 14:50
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 @+
0
cs_JCDjcd Messages postés 1138 Date d'inscription mardi 10 juin 2003 Statut Membre Dernière intervention 25 janvier 2009 4
13 juil. 2005 à 16:42
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é ?
0
Rejoignez-nous