char *a[3], *b="sdgsd";
strcpy(a[0] ,b);              // error here!

解决方案 »

  1.   

    a[0]未初始化,strcpy(a[0] ,b); 当然出错。
      

  2.   

    事实上是这样的:
    public:
        char *sArry[3];在构造函数里面;
    someCtl()
    {
        sArry[0] = sArry[1] = sArry[2] = ""; 
    }
    已经分配和初始化了!
    然后在另一个函数中:
    STDMETHODIMP someCtl::AddToArry(BSTR bsAdd)
    {
         .....
         strcpy(a[0] ,b);              // error here!
    }
      

  3.   

    上述的a[0] 是sArry[0],笔误!
      

  4.   

    使用了c库,project->setting->c/c++中 去掉 _ATL_MIN_CRT
      

  5.   

    在构造函数里面;
    someCtl()
    {
        sArry[0] = sArry[1] = sArry[2] = ""; 
    }
    已经分配和初始化了!这样也没有分配内存啊。someCtl()
    {
        sArry[0] = new char[256];
        sArry[1] = new char[256];
        sArry[2] = new char[256]; 
    }
      

  6.   

    你可以先ATLASSERT(a[0]);
    ATLASSERT(b);strcpy(a[0] ,b);
      

  7.   

    这个时候,标准的东西在这里有了不同;
    你需要这样:
    someCtl()
    {
        sArry[0] = new char[64];
        sArry[1] = new char[64];
        sArry[2] = new char[64]; 
        .....
    }
    跟superS(super慢)说的一样!需要固定内存.你回去试一试!