lstrcpyn内部如下实现
LPTSTR lstrcpyn(LPTSTR pszDst, LPCTSTR pszSrc, int iMaxLength)
{
__try
{
int nLength = max(_tcslen(pszSrc), iMaxLength-1);
memcpy(pszDst, pszSrc, sizeof(TCHAR)*nLength);
pszDst[nLength] = _T('/0');
return pszDst;
}
__catch(EXCEPTION_EXECUTE_HANDLER)
{
return NULL;
}
}
即使源字符串不是以非0结尾、缓冲区不足,都不会异常。