说的对,但CString长度的可变性,使内存分配有了潜在的不安全性。
是否可以通过在该结构中定义个一控制长度的变量来解决呢。
例如:
用 char chText[];
int nTextLength;
来代替CString sItemText的使用呢
要是可以的话,这里面又有那些是要注意的,
要是不可以的话,可以用什么别的办法来解决吗?
是否可以通过在该结构中定义个一控制长度的变量来解决呢。
例如:
用 char chText[];
int nTextLength;
来代替CString sItemText的使用呢
要是可以的话,这里面又有那些是要注意的,
要是不可以的话,可以用什么别的办法来解决吗?
只需要实现内存分配和释放,有精神的话也可以实现其他的。
typedef Struct S_Test
{
S_Test(){/*在这里分配*/}
~S_Test(){/*在这里释放*/}
INT nItem;
TCHAR* psText;
INT nTextLength;
............
}S_TEST,*P_S_TEST;
要注意的是在这样的实现中需要采取措施保证指针的安全性!更好的实现是在结构中定义更多的字符串运算,可以参考CString的实现。
不过,你看上面这种方法真的比用CString安全吗? :)
(以前我迫于无奈实现过这种东西,用起来还是挺方便的,就是实现的时候麻烦一点。)