以下代码是否有问题? 多次调用是否会出现问题?size_t Func2( LPCSTR lpszSrc, BYTE* &pRes );void Func1( LPCSTR lpszSrc )
{
   BYTE *pValue = NULL;
   size_t size = Func2( lpszSrc, pValue );
   .......
   if (pValue)   
      delete [] pValue;
}
size_t Func2( LPCSTR lpszSrc, BYTE* &pRes );
{
   size_t Ret = (size_t)lstrlen(lpszSrc);
   pRes = new BYTE[Ret];
   if ( pRes == NULL )
      return 0;
   memset( (void*)pRes, (void*)lpszSrc, Ret );
   return Ret;
}

解决方案 »

  1.   

    我是用的strlen,重点是内存方面的,谢谢!
      

  2.   

    memset( (void*)pRes, (void*)lpszSrc, Ret );
    不知道楼主这里第二个参数的意思
      

  3.   

    或许你这里想用的是memcpy吧,否则编译会报错的
    cannot convert parameter 2 from 'void *' to 'int'
    void *memset( void *dest, int c, size_t count );
      

  4.   

    我同意楼上的,应该用memcpy好一些吧。
      

  5.   

    size_t Func2( LPCSTR lpszSrc, BYTE* &pRes );void Func1( LPCSTR lpszSrc )
    {
       BYTE *pValue = NULL;
       size_t size = Func2( lpszSrc, pValue );
       //.......
       if (pValue)   
          delete [] pValue;
    }size_t Func2( LPCSTR lpszSrc, BYTE* &pRes )
    {
       size_t Ret = (size_t)lstrlen(lpszSrc);
       pRes = new BYTE[Ret];
       if ( pRes == NULL )
          return 0;
       memcpy((void*)pRes, (void*)lpszSrc, Ret );
       return Ret;
    }
      

  6.   

    对了,忘了这个
    if (pValue) 
       {
          delete [] pValue;
      pValue=NULL;
    }