Ich habe ein Stück Code ein FILE* file
mit fwrite mit:mit einigem malloc-ed Speicher Virtualisieren fopen stattdessen eine Datei mit
test = fwrite(&object,sizeof(object),1,file);
Ich mag einige interne Datenstruktur mit einer Indexstruktur serialisiert (so Ich verwende weder Google's Protobuf noch Cap'n Proto, da dies eine benutzerdefinierte Datenstruktur mit bestimmten Indizierungsanforderungen ist. Nun möchte ich in meinem Projekt Google Test verwenden, um die Serialisierung zu testen, um zu überprüfen, ob sie serialisiert wurde, und dass sie deserialisiert und leicht abgerufen werden kann. In der Testphase möchte ich ein FILE * -Objekt fwrite schreiben, das keine Datei ist, sondern einen Handler zu einem zugewiesenen Hauptspeicher, so daß keine Datei erzeugt wird und ich den Hauptspeicher direkt nach den Ergebnissen von die Serialisierung. Ist es möglich, die FILE*
zu virtualisieren und direkt in den Hauptspeicher zu schreiben? Ich würde gerne aus Performance-Gründen schreiben, um Datenstrukturen schreiben zu können, ohne gezwungen zu sein, zwei verschiedene Methoden für die Serialisierung zu schreiben (Manchmal schreibe ich im laufenden Betrieb ohne weitere Speicherbelegung für die Transcodierung). Danke im Voraus.
'fwrite' nicht wirklich Serialisierung (und es wird nicht nicht-POD-Objekte serialisiert). Wenn Sie in den Speicher schreiben möchten, verwenden Sie einfach 'memcpy', aber nur für POD-Objekte. –
Alles ist ein POD-Objekt in meiner Struktur, und ich möchte den Code nicht als fwrite und memcpy umschreiben. – jackb
In diesem Fall könnten Sie einen Layer erstellen, der entweder in eine Datei oder in den Speicher (Memfile) schreibt und diese für alle Ihre Programme verwendet. Das wäre eine nette Idee. –