0

変更(新しい弾丸の追加、新しい敵の追加、敵または弾丸の削除)が行われたときに、スプライトのベクトルを含む構造体をサーバーからクライアントに送信するハイブリッドプログラムを作成しています。プログラムは、構造体のベクトルに複数の敵を頻繁に追加します。

構造体の送受信は正しく機能しているようですが、構造体をクライアントプログラムの攻撃にコピーしようとすると、プログラムがクラッシュします。構造体のサイズを変更する必要があるのか​​、これを行う方法がわからないのか、それとも別の解決策があるのか​​わかりません。

これが私の構造です:

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);

私はどんな助けにも非常に感謝します、ありがとう

4

2 に答える 2

2

Playerおよび/またはvectorスタック上にあるだけでなく、すべての情報を保存するためにヒープ上のような別の場所へのポインターを持っているように見えます。したがって、メッセージを解凍すると、これらのポインターはぶら下がります。すべての情報がメモリに沿ってきれいに配置されるように、独自のデータ形式を試して設計する必要があります。

于 2013-01-03T20:37:06.170 に答える