习惯性的用strlen来取得字符串的长度,却不想昨天也在这个上面犯了点粘错误!
原来,对于字符串中含有字节为“0”的话,获取的将是错误的,因为strlen的处理是:
碰到0字节时将直接返回,而不考虑后面是否有值,如下:
00407818 |. 8B41 FC |mov eax,dword ptr ds:[ecx-4]========取字符
0040781B |. 84C0 |test al,al ========判断是否为0了
0040781D |. 74 32 |je short test.00407851 ========是,就只好直接退出了!
