Allacation dynamique d'un tableau contenant un string

e52guill Messages postés 6 Date d'inscription vendredi 25 avril 2003 Statut Membre Dernière intervention 10 mai 2006 - 21 oct. 2005 à 17:17
mezaya Messages postés 202 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 6 mars 2010 - 22 oct. 2005 à 00:42
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

Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
21 oct. 2005 à 20:20
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
0
mezaya Messages postés 202 Date d'inscription dimanche 18 mai 2003 Statut Membre Dernière intervention 6 mars 2010
22 oct. 2005 à 00:42
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
0
Rejoignez-nous