Forskjellen mellom røye array [sizeof (Message)]; vs char * matrise = new char [sizeof (Message)];

stemmer
0

Jeg prøver å lage bærbare bibliotek som kan brukes i esp32. Akkurat nå har jeg funksjon som konverterer en struct til en char *. Jeg befolke struct Message og deretter gjøre:

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

Senere vil jeg gjerne sende denne char * til en stikkontakt, får det i den andre siden og rekonstruere struct. Er det mulig ? Også et annet spørsmål jeg har er:

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)];

Hva er forskjellen mellom disse to? matrise er en peker og matrise2 er en matrise, men jeg kan ikke bruke matrise2 i denne funksjonen fordi når jeg får ut av omfanget av funksjonen pekeren til den slettes.

Publisert på 09/10/2019 klokken 12:59
kilden bruker
På andre språk...                            


1 svar

stemmer
0

Jeg ønsker å sende denne char * til en stikkontakt, får det i den andre siden og rekonstruere struct. Er det mulig ?

Ja. Det er mulig. Standard C ++ ikke har en stikkontakt, eller andre nettverkskommunikasjon API derimot, så du må ta kontakt API tilbudt være målet systemet for å gjøre det.

Legg også merke til at meldingen inneholder en peker som vil være til ingen nytte for en prosess i et annet system som ikke har noen adgang til minnet den peker. Videre er forskjellige systemer representerer data på ulike måter. Som sådan, er det bare memcpying meldingen til nettverket strømmen vil ikke fungere. Hvordan gjøre data serialisering er utenfor omfanget av mitt svar.

Hva er forskjellen mellom disse to?

Den ene er en matrise med automatisk eller statisk lagring, og den andre er en peker (med automatisk eller statisk lagring) som peker til første element av matrisen i fri butikken.

Svarte 09/10/2019 kl. 14:28
kilden bruker

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