cstring的问题
刚才看到这篇文章http://blog.csdn.net/0011411/archive/2005/06/22/400363.aspx
简单测试了下其中的例子。
char* p = NULL;
const char* q = NULL;
{
CString str = "abcd";
q = (LPCTSTR)str;
p = str.GetBuffer(20);
AfxMessageBox(q);// 合法的
strcpy(p, "this is test");//合法的,
}
AfxMessageBox(q);// 非法的,可能完蛋
strcpy(p, "this is test");//非法的,可能完蛋
vc 6.0下第一个msgbox的弹出来是乱码,第二个也是。调试时候看了下变量,q和一开始str指向的是同一片内存,getbuffer之后p和str指向另一片内存,然后q指向的那块区域就乱码了。这是为什么呢?
vc 2008(非 unicode)下第一个msbox弹出来是abcd,第二个乱码。