在我的一个程序中,有一个CString 实例,当我给它赋值时,总是崩溃,出现访问违规错误.但我把代码单独拉出来测,没一点事,让我很郁闷.不知何故?
代码类似下面:
int fun(LPCTSTR str)
{
CString strA = str;
CString strTemp;
strTemp = "test"; //这一句崩了.奇怪.我觉的好像是分配内存失败,但
//不应该啊,它是栈分配啊
...................
...........
}
代码类似下面:
int fun(LPCTSTR str)
{
CString strA = str;
CString strTemp;
strTemp = "test"; //这一句崩了.奇怪.我觉的好像是分配内存失败,但
//不应该啊,它是栈分配啊
...................
...........
}
解决方案 »
- 实时更新数据时的listctrl
- 【一直没有解决的老问题】OnLButtonDown中得到的点的座标要转换为在 整个ScrollView中的座标
- 跪求各位给个答案,调试过程中出现的问题。
- 文档/视图结构的问题
- 我在做一个类似资源管理器的文档/视图程序。看相关资料,在做一树形视图时(CTreeView),为什么总是要用到CTreeCttl呢?怎么相联系我也不
- 使用ActiveMovie控件的一个问题
- 多媒体定时器的问题
- 还是老问题:我用在sdi里用菜单打开n个无模式对话框,怎么给这些对话框作打印预览
- 高手帮忙!!!
- 如何用VC画极坐标图?
- ****************送分:一个奇怪的ADO问题,巨简单!!*************
- 到底是csdn没有vc高手还是我的问题太变态???????????????????????????????????
CString strA = str;
为什么要用LPCTSTR,这是unicode, 换成LPCSTR试一试
CString是类,strTemp是对象。
其实赋值是调用构造函数(劝你还是复习一下构造函数吧:) 老兄。)。
CString strTemp= "test"; //等价于CString strTemp= CString("test"); 这么深奥的问题,别忘了给分:)
CString strTemp;
strTemp = "test";这句是没错的,并且调用的是const CString& operator =(...);
如果是这样CString strTemp= "test";那么就会调用CString的拷贝构造函数原来这个函数:
int fun(LPCTSTR str)
{
CString strA = str; //在这里调用了CString的拷贝构造函数
CString strTemp;
}LPCTSTR类型的拷贝构造函数的原型是这样的CString( LPCTSTR lpch, int nLength );
改为这样试试:
int fun(LPCTSTR str)
{
CString strA(str);
CString strTemp;
strTemp = "test"; //这一句崩了.奇怪.我觉的好像是分配内存失败,但
//不应该啊,它是栈分配啊
...................
...........
}
说真的在我的机器上没有问题!Visual C++.Net
strTemp = "test";这一句了,所以很奇怪,它会访问违规
应该是对的。怎么会有这种错误呢。
试试guoxiny(狼) 大哥的方法,我觉得很有道理。
不过,你的代码在我的机器上也没有问题。
我以前遇到的其中一次是由于我的LIB库里的某个结构和我在外边声明的结构大小不一致造成的,你不妨找一找。
CStringList m_List1,m_List2;
至于访问违例,问题肯定是出在其他地方,一般都是其他地方有内存益出了。
把那些文件全删了,然后Rebulid All
说真的,觉得应该没什么问题
DLL内对CString赋值,有些成员成功,有些就不能!我在主程序内给CString赋上“默认值”字符串,则DLL内就可以用Format赋值,原因不详!现在我的解决方法总让自己不安,召唤高人解答!!!