我的MFC程序中须要用到一些全局变量,于是我新建一个C++文件中加入如下变量
LPSTR lpsName = _T("abc");
int nPort = 255;
......并在一个头文件中声明这些全局变量:
extern LPSTR lpsName;在另一些地方我要修改这些变量:
strcpy(lpsName,"ABC");
执行上述语句出错,说内存不能被写,但是修改nPort 就没问题,何解?

解决方案 »

  1.   

    LPSTR lpsName = _T("abc");
    ——虽然你用了一个变量LPSTR lpsName,但它指向的是一个字符串常量,当然不能改了
      

  2.   

    建议:
    char g_Name[100];
    strcpy( g_Name, "abc" );
    要修改时:
    strcpy( g_Name,"ABC" );
      

  3.   

    和extern,全局变量等无关在一个函数中,执行如下语句,同样会出异常
    LPSTR lpsName = _T("abc");
    strcpy(lpsName,"ABC");具体原因嘛,俺解释不清,反正俺是不会这样用地!哪个dx来解释下?
      

  4.   

    LPSTR lpsName =NULL;
    int nPort = 255;
    ......
    初始化:
    if(lpsName==NULL)
    {
    lpsName =(LPSTR) new char(100);
    strcpy(lpsName,"ABC");
    }其它地方使用
    strcpy(lpsName,"ABC");最后别忘了释放
    if(lpsName!=NULL)
    {
    delete [] lpsName;
    lpsName=NULL;
    }