Packets::LoginData data;
data.username = "frostraver";
data.password = "test";
auto buffer = reinterpret_cast<char*>(&data);
我有上面的代码。我需要能够计算缓冲区中数据的大小(这是一个指针)。我知道我不能做一个strlen或类似的东西。
获得此尺寸的最佳方法是什么?我可以采用填充结构的大小吗?
答案 0 :(得分:1)
不,不可能。类型为buffer
的{{1}}只是一个没有任何大小信息的指针变量。即使您确定结构的大小,也可能不完整,因为您的一个或多个字段可能会成为导致无效/不正确/不完整结果的指针。
下图总结了答案
Packets::LoginData*
最重要的是,C ++不支持反射,所以没有明确支持的序列化的一般解决方案是没有意义的