VS2010 CString 提示无效指针问题
CTestApp
{
成员拉变量声明:
CString m_strPath;
}
//读取系统的配置文件,声音文件的路径
CTestApp::ReadConfig()
{
char lpszPathName[MAX_PATH];
memset(lpszPathName, 0x0, sizeof(lpszPathName));
::GetModuleFileNameA(::AfxGetInstanceHandle(), lpszPathName, MAX_PATH);
m_strPath=lpszPathName; //提示 m_strPath 无效指针
}
如何解决? 代码从Vc6移植过来的
[解决办法]
是否Unicode?
把编译器的保存发出来,肯定不是“m_strPath 无效指针”,是不是无法赋值之类的
不能memset &m_strPath (和你贴的代码无关)
[解决办法]
可能是因为路径中文,你把路径换成英文试试。
[解决办法]
楼主测试下直接给m_strPath赋值行不行?这句应该没有错啊
[解决办法]
楼主请排查我说的一种情况,
查查你的程序的其他地方,有没有可能产生内存越界的问题
就是说访问的内存地址,超过你的变量分配的内存地址
[解决办法]
在调用GetModuleFileNameA之前,m_strPath是有效的吗?如果是有效就是GetModuleFileNameA的参数问题,或者应该用GetModuleFileNameW,Unicode版本
[解决办法]
m_strPath=CString(lpszPathName);
[解决办法]