如果你需要担心服务器和客户端不同版本之间的兼容性,我建议使用Google协议缓冲区或JSON(可以使用现有的实现,也可以编写自己的实现)。如果版本始终保持同步,只需编写自己的二进制序列化,甚至可以将内存结构定制为“序列化”形式,并使用访问函数来读取和写入它。这基本上涉及将数字以固定字节顺序存储为一些vlc格式(如果你想变得花哨一些),并在一个对象需要引用另一个对象时使用某种对象句柄(最简单的是指向数组的偏移量)代替显式指针。将数据保持在“序列化”形式内部的一个非常好的附带好处是,你可以在磁盘上处理大型数据集(例如通过mmap)而无需编写自己的复杂缓存代码。