读书人

数组边界的有关问题

发布时间: 2012-08-22 09:50:35 作者: rapoo

数组边界的问题

if (pFontData->strFontNameInUse != UP_NULL)
{
pFontInfo->pszFontName = new UP_WCHAR[_wcslen(pFontData->strFontNameInUse)+1];
_wcscpy_s(pFontInfo->pszFontName, _wcslen(pFontData->strFontNameInUse)+1, pFontData->strFontNameInUse);
}

第一个红色字体标注的地方已经将长度设置成+1了,为什么第二处红色标注的地方还要再+1呢?
感觉没必要啊。

[解决办法]
申请空间时为串尾'\0'考虑,多一个
复制时就要把源串中这个'\0'也复制过去啊!
[解决办法]
_wcslen(pFontData->strFontNameInUse)+1只是表达式,它并没有++的效果,不会导致前面的长度+1,所以后面还得这样用。
[解决办法]
pFontInfo->pszFontName = new UP_WCHAR[_wcslen(pFontData->strFontNameInUse)+1];
只是说明pszFontName 的长度为L+1个,所以_wcscpy_s函数的参数要指定pFontInfo->pszFontName的长度,即L+1个

读书人网 >C++

热点推荐