Différence entre la matrice de char [sizeof (Message)]; char * vs array = new char [sizeof (Message)];

voix
0

Je suis en train de faire la bibliothèque portable qui peut être utilisé dans esp32. En ce moment je fonction qui convertit un struct à un char *. Je alimenter le message struct puis faire:

memcpy(array,&message,sizeof(Message));

Plus tard, je voudrais envoyer ce char * à une prise, recevoir de l'autre côté et de reconstruire la structure. Est-ce possible ? , Une autre question que j'ai aussi est:

struct Header{
    uint32_t source_id;
    uint32_t destinatary_id;
    uint32_t message_type;
};

struct Data {
    uint32_t dataSize;
    uint8_t* data;
};

struct Message{
    Header header;
    Data data;
    uint32_t timestamp;
};

char* array = new char[sizeof(Message)];
char array2[sizeof(Message)];

Quelle est la différence entre ces deux? tableau est un pointeur et array2 est un tableau, mais je ne peux pas utiliser array2 dans cette fonction car une fois que je sors de la portée de la fonction du pointeur vers elle est supprimée.

Créé 09/10/2019 à 12:59
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Je voudrais envoyer ce char * à une prise, recevoir de l'autre côté et de reconstruire la structure. Est-ce possible ?

Oui. C'est possible. C ++ standard ne dispose pas d'une prise, ou tout autre API de communication réseau cependant, vous devez donc consulter l'API proposée soit le système cible pour le faire.

Notez également que le message contient un pointeur qui sera d'aucune utilité à un processus sur un autre système qui n'a pas accès à la mémoire, il pointe. En outre, différents systèmes représentent des données de différentes façons. En tant que tel, memcpying simplement le message au flux de réseau ne fonctionnera pas. Comment faire sérialisation de données est en dehors de la portée de ma réponse.

Quelle est la différence entre ces deux?

L'un est un tableau de mémorisation automatique ou statique, et l'autre est un pointeur (avec enregistrement automatique ou statique) qui pointe vers premier élément de réseau en magasin libre.

Créé 09/10/2019 à 14:28
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more