Diferența dintre matrice char [sizeof (Message)]; vs char * array = new char [sizeof (Message)];

voturi
0

Am încercat să fac bibliotecă portabil, care pot fi utilizate în esp32. Chiar acum am funcție care convertește un struct la un char *. Am popula struct mesajul și apoi faceți:

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

Mai târziu, aș dori să trimit acest char * la o priză, primi-o în partea cealaltă și să reconstruiască struct. Este posibil ? De asemenea, o altă întrebare am este:

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

Care este diferența dintre cei doi? matrice este un pointer și matrice2 este o matrice dar nu pot folosi matrice2 în această funcție, deoarece odată ce ies din domeniul de aplicare al funcției de indicatorul pentru acesta este șters.

Întrebat 09/10/2019 la 12:59
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

Aș dori să trimit acest char * la o priză, primi-o în partea cealaltă și să reconstruiască struct. Este posibil ?

Da. Este posibil. Standard C ++ nu are o priză, sau orice alt API-ul de rețea de comunicare cu toate acestea, astfel încât trebuie să se consulte API-ul oferit de a fi sistemul țintă de a face acest lucru.

De asemenea, rețineți că mesajul conține un pointer care va fi de nici un folos la un proces pe un alt sistem care nu are acces la memorie este îndreptată. Mai mult decât atât, diferite sisteme reprezintă date în moduri diferite. Ca atare, pur și simplu memcpying mesajul la fluxul de rețea nu va funcționa. Cum se face serializare de date este în afara domeniului de aplicare a răspunsului meu.

Care este diferența dintre cei doi?

Una este o matrice cu stocare automată sau statice, iar celălalt este un pointer (cu stocare automată sau statică) care indică primul element de matrice în magazin gratuit.

Publicat 09/10/2019 la 14:28
sursa de către utilizator

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