c++ - 通过 UDP 套接字发送结构 memcopy C++

标签 c++ struct udp memcpy

我正在编写一个混合程序,当发生更改(添加新子弹、添加新敌人、删除敌人或子弹)时,该程序将包含 Sprite vector 的结构从服务器发送到客户端。该程序经常将几个敌人添加到结构中的 vector 。

结构的发送和接收似乎工作正常,但是当我尝试将结构 memcopy 到客户端程序中时,程序崩溃了。我不确定是否必须重新调整结构的大小或如何执行此操作,或者是否有其他解决方案。

这是我的结构:

struct map{ 
Player Player1;//DECLARE Player SPRITE  

vector<Bullet> Bullets;

vector<Enemy*> Enemies;

}Map;
char Buffer[100];

这是我在收到结构后使用的功能:

memcpy(&Map, Buffer, sizeof(Buffer));
MessageBox (NULL, "Memcopied",  "HelloMsg", MB_OK);

如果有任何帮助,我将不胜感激,谢谢

最佳答案

看起来 Player 和/或 vector 不仅在堆栈上,而且它们自己还指向其他地方,比如在堆上以存储您的所有信息。因此,一旦您解压消息,这些指针就会悬空。您应该尝试设计自己的数据格式,其中所有信息都整齐地放置在内存中。

关于c++ - 通过 UDP 套接字发送结构 memcopy C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14146737/

相关文章:

c++ - 浮点值比较失败

matlab - 获取结构的第 n 个字段

c - 用于自动搜索服务器的 UDP 广播

c# - 将数据从服务器顺序传输到多个客户端

c++ - 将 CMake 与多个编译器一起用于同一语言

c++ - 如果不先初始化 vector ,该如何处理 vector ?

c++ - 诺基亚N95可以编译运行C/C++程序吗?

c - 二叉树实现: issues with insert_tree()

c - 结构数组 - C 中的内存释放

python - 检查服务器是否在线的合理超时是多少?