说的对,但CString长度的可变性,使内存分配有了潜在的不安全性。
是否可以通过在该结构中定义个一控制长度的变量来解决呢。
例如:
用 char chText[];
   int  nTextLength;
来代替CString sItemText的使用呢
 要是可以的话,这里面又有那些是要注意的,
要是不可以的话,可以用什么别的办法来解决吗?

解决方案 »

  1.   

    如果要使用变长的字符串又想使结构的长度是固定的,很简单——自己实现CString就行了! ^o^
    只需要实现内存分配和释放,有精神的话也可以实现其他的。
    typedef Struct S_Test
    {
      S_Test(){/*在这里分配*/}
      ~S_Test(){/*在这里释放*/}
      INT nItem;
      TCHAR* psText;
      INT nTextLength;
      ............
    }S_TEST,*P_S_TEST;
    要注意的是在这样的实现中需要采取措施保证指针的安全性!更好的实现是在结构中定义更多的字符串运算,可以参考CString的实现。
    不过,你看上面这种方法真的比用CString安全吗? :)
    (以前我迫于无奈实现过这种东西,用起来还是挺方便的,就是实现的时候麻烦一点。)