Probleme de mapping memoire[résolu] - C - Programmation
Marsh Posté le 06-07-2005 à 10:21:33
deff a écrit : et un tableau :
|
Euh, tu es sûr de ton coup, là ?
Parce que sizeof retourne le nombre de bytes occupés par ta structure, tu es certain que c'est ce que tu veux comme nombre de valeur dans ton tableau ?
Marsh Posté le 06-07-2005 à 10:36:23
ben je pense
je veux que mon tableau ai la meme taille que ma structure.
c pas bon ????
Marsh Posté le 06-07-2005 à 10:40:01
deff a écrit : ben je pense |
Par "la même taille", tu entends quoi au juste ?
Il faut bien voir que ce que tu es en train de faire, c'est de définir un tableau de bytes non signés dont le nombre d'éléments est égal au nombre de bytes qu'occupe ta structure en mémoire.
Y a moyen de faire quelque chose, mais ça dépend de ce que tu cherches à faire, et il y a peut-être moyen de faire plus simple.
Tu veux faire quoi exactement ?
EDIT : 4 x "faire" en deux phrases, vive mon vocabulaire varié
Marsh Posté le 06-07-2005 à 10:43:23
tu peux peut etre essayer de faire qqch avec ca:
Code :
|
ca copie les données apres faut voir dans quel ordre elles sont placées (ca dépend peut etre du compilo) mais y a des chances que ce soit sous la forme:
Code :
|
unsigned char var2 = tab[4];
unsigned char var3 = tab[5];
Code :
|
ou alors
Code :
|
Citation : si struc_mod_part.var2 = 6 alors tab[2]==6 |
(mais bon ca te donnera pas var1 <-> tab[1], var2 <-> tab[2], etc)
Marsh Posté le 06-07-2005 à 10:47:25
chicotruss a écrit :
|
Et si c'est compilé sur une plateforme 64 bits ? Ou 16 bits ?
En plus je voudrais savoir ce qu'il veut faire exactement, car je ne vois pour l'instant pas l'intérêt de la chose.
Marsh Posté le 06-07-2005 à 10:58:05
je veux simplement recopier les données qui sont dans une structure et les mettre dans un tableau de byte.
apres le but final, c'est une autre histoire....
Marsh Posté le 06-07-2005 à 11:10:11
deff a écrit : je veux simplement recopier les données qui sont dans une structure et les mettre dans un tableau de byte. |
memcpy()
Marsh Posté le 06-07-2005 à 15:08:29
non ça n'a pas l'air de bien marcher avec memcpy.
j'ai fait cette essai :
Code :
|
ça me retourne : 22 11 0 0 33 44 4 8 1 1
au lieu de : 22 11 33 44 1 1 1 1 1 1
??????
Marsh Posté le 06-07-2005 à 15:15:55
Normal : unsigned int sur ta plateforme = 4 bytes, donc peu importe comment tu l'initialises, ça occupera 4 bytes, donc 4 cases de ton tableau.
Marsh Posté le 06-07-2005 à 15:25:30
deff a écrit : non ça n'a pas l'air de bien marcher avec memcpy.
|
Dans une structure, il peut y avoir des bytes de padding... Il est temps d'ouvrir ton livre de C...
Mapper une structure sur un tableau de char produit un résultat qui dépend de l'implémentation. C'est pas portable.
Marsh Posté le 06-07-2005 à 15:56:07
ok ça marche maintenant !
j'ai changé les int en short et c'est ok.
merci pour tout.
Marsh Posté le 06-07-2005 à 10:11:27
bonjour,
voici mon probleme :
j'ai une structure :
et un tableau :
j'aimerai recopier les donnée de l'un dans l'autre, c'est à dire si struc_mod_part.var2 = 6 alors tab[2]==6
il y a t'il un moyen simple ??
Message édité par deff le 06-07-2005 à 15:56:26