我正在编写一个混合程序,当发生更改(添加新子弹、添加新敌人、删除敌人或子弹)时,该程序将包含 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/