Ich habe einige Nachforschungen angestellt, kann aber keine endgültige Zustimmung oder Ablehnung finden.Binäre Serialisierung von Daten mit variabler Länge und Nulllängen-Arrays, ist es sicher?
Was ich will, ist eine feste Größe Struktur + variabler Länge Teil, so dass die Serialisierung in einfacher und weniger fehleranfälliger Weise ausgedrückt werden kann.
struct serialized_data
{
int len;
int type;
char variable_length_text[0];
};
Und dann:
serialize_data buff = (serialize_data*)malloc(sizeof(serialize_data)+5);
buff->len=5;
buff->type=1;
memcpy(buff->variable_length_text, "abcd", 5);
Leider kann ich nicht finden, wenn MSVC, GCC, Klappern usw., mit ihm in Ordnung sind.
Vielleicht gibt es einen besseren Weg, um das gleiche zu erreichen?
Ich will nicht wirklich diese hässlichen Abgüsse rundum:
memcpy((char*)(((char*)buffer)+sizeof(serialize_data)), "abcd", 5);
Die 'char variable_length_text sein sollte [1];', aber ja, es ist sicherlich ein besserer Weg, das gleiche zu erreichen. – ildjarn
Wählen Sie eine Sprache. Interessieren Sie sich für C++ oder C? –
Sie werden diesen Artikel wahrscheinlich nützlich finden. Beantwortet nicht die Tragbarkeitsfrage, gibt aber einen Einblick in dieses Muster http://blogs.msdn.com/b/oldnewthing/archive/2004/08/26/220873.aspx – JaredPar