const char* GetDateTimeStr(int iFormat)
{
try
{
char* szDateTime = "HHHHHHHHHHGGGGGGGGGGFFFFFFFFFFEEEEEEEEEE";
char tmp[41];
memset(tmp,0,sizeof(tmp));
sprintf(tmp,"aaaaaaaaa");
strcpy(szDateTime,tmp); //发生异常
return (const char*)szDateTime;
}
catch(...)
{
return NULL;
}
}

解决方案 »

  1.   

    char* szDateTime = "HHHHHHHHHHGGGGGGGGGGFFFFFFFFFFEEEEEEEEEE";
    这样定义,szDateTime指向一个常量, 不能更改它的值,即不能strcpychar *szDateTime;
    szDateTime = "HHHHHHHHHHGGGGGGGGGGFFFFFFFFFFEEEEEEEEEE";
    ...
      

  2.   

    szDateTime需要有buffer
    而你这样定义的等于时一个 const char 了
    int nSize=strlen("HHHHHHHHHHGGGGGGGGGGFFFFFFFFFFEEEEEEEEEE");
    char* szDateTime=new char[nSize+1];
    strcpy(szDateTime,"HHHHHHHHHHGGGGGGGGGGFFFFFFFFFFEEEEEEEEEE");
    szDateTime[nSize]=0;
    ..............
      

  3.   

    楼上的没错,但是如果我new的话,必须提供函数来free啊,这就违背了我返回const char*的目的了,
      

  4.   

    const char* GetDateTimeStr(int iFormat)
    {
    static char szDateTime[64] = "HHHHHHHHHHGGGGGGGGGGFFFFFFFFFFEEEEEEEEEE";
    char tmp[41];
    memset(tmp,0,sizeof(tmp));
    sprintf(tmp,"aaaaaaaaa");
    strcpy(szDateTime,tmp); //发生异常
    return (const char*)szDateTime;
    }
      

  5.   

    const char* GetDateTimeStr(int iFormat)
    {
    char szDateTime[64] = "bbbbbbbbbbbbbbbbbbbbb";
    char tmp[41];
    memset(tmp,'\0',sizeof(tmp));
    sprintf(tmp,"aaaaaaaaa");
    strcpy(szDateTime,tmp); //正常
    return (const char*)szDateTime;
    }
    代码中不要随便用指针,否则错了都不知在哪里了,呵呵