我有一个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对象,设置其名称和密码并将其转发给另一个类.现在剩下的属性为空且未使用但仍占用内存.
我怎么解决这个问题?
更新: 在这种情况下,访客模式是否会帮助我,我不确定目标是否存在此类问题.
由于Basile的答案在全球意义上是正确的,我认为重要的是陈述以下内容.
如果您尝试实现通信协议,我建议使用常用的数据序列化库.
这些库允许您轻松声明通信协议,它们包括对此类功能的支持等,并且受到许多不同语言的支持.
可以在此处找到完整的选项列表.
我过去成功使用过这些: