structure, pointeur, memcpy
Bonjour,
je dois envoyer une structure dans un buffer par l'intermédiaire d'un memcpy et reconstruire cette structure à l'arrivée.
Mon souci est qu'a l'interieur de la structure j'ai un nombre variables de sous structure.
Ex
struct toto
{
struct titi* titis;
};
Donc si je fais un memcpy, a cause de mon pointeur ca risque de mal se passer.
Une solution serait de declarer un tableau fixe de structure.
Existe t'il une autre solution ?
Re: structure, pointeur, memcpy
Citation:
Envoyé par romeo9423
je dois envoyer une structure dans un buffer par l'intermédiaire d'un memcpy et reconstruire cette structure à l'arrivée.
Mon souci est qu'a l'interieur de la structure j'ai un nombre variables de sous structure.
<...>
Une solution serait de declarer un tableau fixe de structure.
Existe t'il une autre solution ?
Oui, ce que tu veux faire s'appelle la "sérialisation". Tu as mis le doigt sur un problème bien connu. Une structure C sert à organiser des données dans la mémoire de la machine, mais pas à transporter des données d'une machine à l'autre (et ce pour de nombreuses raisons dont celle que tu as évoquée)..
Il faut utiliser un format indépendant compatible avec le flux de transport (le plus courant est la séquence d'octets, par exemple).
Le plus simple est la conversion en texte avec un format simple comme CSV (Valeurs séparées par une virgule) ou plus complexe, mais standard, comme XML. Il existe d'autres formats standards binaires mais plus complexes à mettre en oeuvre (BER, XDR ...)