最近调查一个问题,发现一个short[33]的数组,里面本来都是0、1的,某些时候会莫名其妙的变成8.不知道哪位大神能帮忙解答一下。
------最佳解决方案--------------------------------------------------------
注意
c++ 字符串以\0结尾
------其他解决方案--------------------------------------------------------
可能是数组经过某个函数被修改。
------其他解决方案--------------------------------------------------------
只是偶然情况下会这样,程序可能执行几百次才会出现一次这样的情况,我们是通过日志发现的。
------其他解决方案--------------------------------------------------------
strparam是前台传过来的长度为33的串,后台通过下面代码改变
m_anParam的值,其他地方m_anParam不再变化。目前分析原因2种:
一种strparam传过来之前在前台已经变成88888888....;另外就是在下面代码中偶然出现
m_anParam[i]=8;
for(int i=0; i < strparam; i++)
{
char sParam = strparam[i];
m_app->m_anParam[i] = short(atoi(&sParam ));
}
------其他解决方案--------------------------------------------------------
数组使用前有没有置0 memset。
------其他解决方案--------------------------------------------------------
可能和5楼说的一样,memset置零了