Allacation dynamique d'un tableau contenant un string

Signaler
Messages postés
6
Date d'inscription
vendredi 25 avril 2003
Statut
Membre
Dernière intervention
10 mai 2006
-
Messages postés
202
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
6 mars 2010
-
Bonjour



Un petit souçi d'allacation de mémoire:



J'ai défini une structure censé représenter un élément d'une matrice el_mat



typedef struct EL_MAT

{

string name; //name sert à représenter une valeur symbolique corespondant à value

float value; //valeur réelle de l'élément de la matrice

int mark;

}el_mat;



Pour créer ma matrice, j'utilise donc un double pointeur sur cet structure el_mat



et j'ai alloué la mémoire avec:



Mat = (el_mat **) malloc (size_Mat * sizeof (el_mat *));

for (row = 0; row < size_Mat; row++)

Mat[row] = (el_mat *) malloc (size_Mat * sizeof (el_mat));



Or du fait du type string dans ma structure sizeof(el_mat) ne renvoit
pas une info correct et donc Mat est à l'étroit. J'arrive bien à
remplir correctement les champs mark et value mais pour ce qui est de
name, après avoir mis tout les Mat[][].name à "A" ,je m'aperçois que
finalement une valeur sur deux est à A, l'autre est à 0. J'ai bien
testé en remplaçant le string par char et la pas de problème, j'ai bien
A dans le champ name pour toute les éléments de ma matrice. J'en
conclue donc que l'allocation mémoire ne s'est pas faite
correctement. Et je comprends bien pourquoi mais comment y
remedier ????



Si certains d'entres vous ont des idées....

2 réponses

Messages postés
364
Date d'inscription
mercredi 11 février 2004
Statut
Membre
Dernière intervention
5 octobre 2006
2
Salut,

c'est bien C++ (string + le cast devant le malloc laissent supposer que oui

alors que le typedef devant le struct fait penser à du C) ?



Si ton but est d'attrendre à utiliser malloc... je laisse les spécialistes répondre.



Sinon, utilise directement un vector< el_mat >.

Fait fonctionner ton programme et si tu considéres qu'il ne va pas assez vite essaye

avec vector<...>.reserve, puis éventuellement des malloc.


//Ma participation à la saturation du net:
//http://hylvenir.free.fr
Messages postés
202
Date d'inscription
dimanche 18 mai 2003
Statut
Membre
Dernière intervention
6 mars 2010

l'allocation mémoire ce fait correctement si c'est la classe string du
std il doit pas avoir de probleme. Peut être une erreur autre part ?

Voili,Voilou