如何避免为未使用的属性分配内存

0 c++ memory class

我有一个Message类,它包含消息可以包含的所有可能元素:

class Message {
    int msg_id;
    int msg_length;

    char *username;
    char *password;
    char *usr_list;
    char *to;
    char *from;
    char *grp_name;
    int digit_1;
    int digit_2;
    char *msg;
};
Run Code Online (Sandbox Code Playgroud)

但是不同的消息类型具有不同的主体元素,并且使其中的对象消耗大量内存.例如,我的程序收到以下数据:

Msg -> (1, name, password)
Run Code Online (Sandbox Code Playgroud)

当程序读取a时1,它会创建一个Message对象,设置其名称和密码并将其转发给另一个类.现在剩下的属性为空且未使用但仍占用内存.

我怎么解决这个问题?

更新: 在这种情况下,访客模式是否会帮助我,我不确定目标是否存在此类问题.

Dan*_*man 6

由于Basile的答案在全球意义上是正确的,我认为重要的是陈述以下内容.

如果您尝试实现通信协议,我建议使用常用的数据序列化库.

这些库允许您轻松声明通信协议,它们包括对此类功能的支持等,并且受到许多不同语言的支持.

可以在此处找到完整的选项列表.

我过去成功使用过这些: