Card类的定义:
public class Card
{
public Card()
{
id = 0;
kind = 0;
num = 0;
reserved = 0;
}
public byte id;
public byte kind;
public byte num;
public byte reserved;
}
客户端接收数据:
int place = 0;
for(int i=0;i<17;i++)
{
this.userCard[i] = new Card();
this.userCard[i].id = this.recvBuffer[place];
this.userCard[i].kind= this.recvBuffer[place+1];
this.userCard[i].num= this.recvBuffer[place+2];
this.userCard[i].reserved= this.recvBuffer[place+3];
place += 4;
}
这段代码,接收正常,以下代码,接收到的数据会出错: int place = 0;
for(int i=0;i<17;i++)
{
this.userCard[i].id = 0;
this.userCard[i].kind= 0;
this.userCard[i].num= 0;
this.userCard[i].id = 0;
this.userCard[i].id = this.recvBuffer[place];
this.userCard[i].kind= this.recvBuffer[place+1];
this.userCard[i].num= this.recvBuffer[place+2];
this.userCard[i].reserved= this.recvBuffer[place+3];
place += 4;
}因为,每局游戏开始后都会发牌,所以采用第一种方法会new Card很多次,造成资源浪费,
第二种方法,我试了很多次,第一次发牌没问题,第二次就会出现接收到的数据和服务器发出的数据不同,
调试服务器发出数据是正确的.
哪位高手帮忙看一下.
public class Card
{
public Card()
{
id = 0;
kind = 0;
num = 0;
reserved = 0;
}
public byte id;
public byte kind;
public byte num;
public byte reserved;
}
客户端接收数据:
int place = 0;
for(int i=0;i<17;i++)
{
this.userCard[i] = new Card();
this.userCard[i].id = this.recvBuffer[place];
this.userCard[i].kind= this.recvBuffer[place+1];
this.userCard[i].num= this.recvBuffer[place+2];
this.userCard[i].reserved= this.recvBuffer[place+3];
place += 4;
}
这段代码,接收正常,以下代码,接收到的数据会出错: int place = 0;
for(int i=0;i<17;i++)
{
this.userCard[i].id = 0;
this.userCard[i].kind= 0;
this.userCard[i].num= 0;
this.userCard[i].id = 0;
this.userCard[i].id = this.recvBuffer[place];
this.userCard[i].kind= this.recvBuffer[place+1];
this.userCard[i].num= this.recvBuffer[place+2];
this.userCard[i].reserved= this.recvBuffer[place+3];
place += 4;
}因为,每局游戏开始后都会发牌,所以采用第一种方法会new Card很多次,造成资源浪费,
第二种方法,我试了很多次,第一次发牌没问题,第二次就会出现接收到的数据和服务器发出的数据不同,
调试服务器发出数据是正确的.
哪位高手帮忙看一下.
楼主【sgh321】截止到2008-07-10 17:59:39的历史汇总数据(不包括此帖):
发帖的总数量:0 发帖的总分数:0 每贴平均分数:0
回帖的总数量:1 得分贴总数量:1 回帖的得分率:100%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:---------------------结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
我感觉可能是new的时候开辟新空间,所以存储无误;而第2种方法等于是在原来创建的基础上全部归零。如果你把
this.userCard[i].id = 0;
this.userCard[i].kind= 0;
this.userCard[i].num= 0;
this.userCard[i].id = 0;
这4行去掉,结果是什么样的呢?
用你的第一种方法客户端接收数据:
int place = 0;
for(int i=0;i <17;i++)
{
Card c = new Card(); ……
c=null;
} 这样垃圾回自动回收,应该不会造成资源浪费。
如果在构造函数中new Card,
然后,每次收数据时:
c = null;
c = new Card();我测试了,不会出现数据错误的现象,
这样的会对性能产生影响吗?
结果,是相同的;