为什么会报错呀?该怎么处理

为什么会报错呀?读取注册表为什么读取完成之后会内存报错呢?C/C++ codevoid CTestView::OnRegRead(){HKEY

为什么会报错呀?
读取注册表为什么读取完成之后会内存报错呢?

C/C++ code
void CTestView::OnRegRead(){             HKEY hKey;    RegOpenKey(HKEY_LOCAL_MACHINE,_T("SOFTWARE\\Test"),&hKey);    DWORD dwType;    DWORD dwValue;    CString csDir;    RegQueryValueEx(hKey,_T("test"),0,NULL,(LPBYTE)&csDir,&dwValue);    CString str;    str.Format("%s",&csDir);    MessageBox(str);}


请问哪里有问题?谢谢

[解决办法]
CString csDir;
 RegQueryValueEx(hKey,_T("test"),0,NULL,(LPBYTE)csDir.GetBuffer(100),&dwValue);
 csDir.ReleaseBuffer();