确定结构转换为char的大小*

时间:2014-10-24 17:05:44

标签: c++

Packets::LoginData data;
data.username = "frostraver";
data.password = "test";

auto buffer = reinterpret_cast<char*>(&data);

我有上面的代码。我需要能够计算缓冲区中数据的大小(这是一个指针)。我知道我不能做一个strlen或类似的东西。

获得此尺寸的最佳方法是什么?我可以采用填充结构的大小吗?

1 个答案:

答案 0 :(得分:1)

不,不可能。类型为buffer的{​​{1}}只是一个没有任何大小信息的指针变量。即使您确定结构的大小,也可能不完整,因为您的一个或多个字段可能会成为导致无效/不正确/不完整结果的指针。

下图总结了答案

Packets::LoginData*

最重要的是,C ++不支持反射,所以没有明确支持的序列化的一般解决方案是没有意义的