私は文字列を含む構造体を持っています。そのような何か:STL文字列にfread/fwriteを使用しています。それが正しいか?
struct Chunk { int a; string b; int c; };
だから、私は、関数freadとfwriteの機能を使用してファイルからこの構造体を読み書きすることができない、と仮定します。 stringは異なるメモリ容量を予約する可能性があるためです。 しかし、そのようなコードは正しく動作します。
Chunk var;
fwrite(&var, sizeof(Chunk), 1, file);
fread(&var, sizeof(Chunk), 1, file);
本当にそれでいくつかの問題がありますか?
これに加えて、ポインタはPODですが、通常はよくシリアル化されません。 –
ありがとう@ベン、私の用語は緩いです。 –
また、PODタイプのアラインメントには注意が必要です。 'struct s {uint8_t c; uint64_t d}; '' sizeof(struct s) 'はおそらく9ではありません。 – user786653