linux c下拷贝字符串时却改变其它值
最近在linux c:
int isSuccess = 0;
char PackTypes[2];
char ErrMess[100];
/*解析应答结构体*/
isSuccess = (int)sBsnResultBody.Success;
(void)strcpy(PackTypes,sBsnResultBody.PacketType)
printf("\n是否成功:%d,%s",isSuccess);
在打印isSuccess时的值却为1,着实郁闷了。
最后改为:
char PackTypes[2];
int isSuccess = 0;
char ErrMess[100];
/*解析应答结构体*/
isSuccess = (int)sBsnResultBody.Success;
snprintf(PackTypes,sizeof(PackTypes),"%s",sBsnResultBody.PacketType);
printf("\n是否成功:%d",isSuccess);
才成功。引起的原因应该是linux下内存分配机制与其它系统不一样(每个系统都不一样吧)。
如果PackTypes在取得数据时发生泄出,他可能会向前覆盖。
有时间得看一下linux的内在分配是什么机制!
有知道的朋友可以指点一下!先谢了。
浙公网安备 33010602011771号