错误记录

整数越界的问题

//---------------------------------------------------------------

int fun();

float fResult = fun() * fun();

//----------------------------------------------------------------

这样写还是可能越界

fun()*fun()的结果类型依然是int,只不过在赋值时,强转成float

//---------------------------------------------------------------

int fun();

float fTemp = (float)fun();

float fResult = fTemp * fTemp;

//----------------------------------------------------------------

 

 栈回收错误的问题

uint8 ua,ur,ug,ub;
 sscanf(fs_szDicStr.c_str(), "#%X#%X#%X#%X", &ua, &ur, &ug, &ub);

%X是按照int32类型的长度往uint8类型的ua,ur,ug,ub中写,这就造成了写越界了。程序回收ua,ur,ug,ub时,栈ub已经被写坏了。

应该改成

int32 ua,ur,ug,ub;
sscanf(fs_szDicStr.c_str(), "#%X#%X#%X#%X", &ua, &ur, &ug, &ub);

 

posted @ 2013-08-27 13:32  海盗剑客  阅读(127)  评论(0)    收藏  举报