首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

数组边界的有关问题

2012-08-22 
数组边界的问题if (pFontData-strFontNameInUse ! UP_NULL){pFontInfo-pszFontName new UP_WCHAR[_wc

数组边界的问题

  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个

热点排行