CString 变量 析构时,报错.详见内容

2023-12-21 08:08

本文主要是介绍CString 变量 析构时,报错.详见内容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CString 变量 析构时,报错.详见内容
代码如下:
C/C++ code
LRESULT CXxx::OnEnableEdit(WPARAM, LPARAM)
{CString strOne("ABC");CString strTwo("DEF");UpdateData(true);if (m_s_ComString == strOne){m_nFlag = MODE_ONE;}if (m_s_ComString == strTwo){m_nFlag = MODE_TWO;}switch (m_nFlag){case MODE_ONE:{((CComboBox *)GetDlgItem(IDC_COM_STAND_ITEM))->EnableWindow(true);break;}case MODE_TWO:{((CComboBox *)GetDlgItem(IDC_COM_STAND_ITEM))->EnableWindow(false);CXXXDialog dlg;dlg.DoModal();}}return 0;  //语句一
}~CStringT() throw()  //函数二{}~CSimpleStringT() throw(){CStringData* pData = GetData();pData->Release(); //语句三}void struct CstringData::Release() throw()
{ATLASSERT( nRefs != 0 );if( _AtlInterlockedDecrement( &nRefs ) <= 0 ){pStringMgr->Free( this );  //语句四}
}


调用堆栈显示调用过程为 
语句一 -> 函数二 -> 语句三 ->语句四

语句四处发生异常。显示pStringMgr为0xdddddddd.

找不出错误原因,请指点

------解决方案--------------------
可能CString对象的堆栈被破坏了

------解决方案--------------------
跨线程还是跨模块用CString了
------解决方案--------------------
CString strOne("ABC");
CString strTwo("DEF");

这里需要析构的cstring变量就这两个,但是这样赋值好像没有问题的
你去掉这两个变量试试看,比较那里用Compare直接比较试一下


CString拷贝:
CString str;
CString Str;
str.Format(L"%s", Str);

这篇关于CString 变量 析构时,报错.详见内容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/519208

相关文章

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virtual disk”问题

《VMWare报错“指定的文件不是虚拟磁盘“或“Thefilespecifiedisnotavirtualdisk”问题》文章描述了如何修复VMware虚拟机中出现的“指定的文件不是虚拟... 目录VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virt

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

Perl 特殊变量详解

《Perl特殊变量详解》Perl语言中包含了许多特殊变量,这些变量在Perl程序的执行过程中扮演着重要的角色,:本文主要介绍Perl特殊变量,需要的朋友可以参考下... perl 特殊变量Perl 语言中包含了许多特殊变量,这些变量在 Perl 程序的执行过程中扮演着重要的角色。特殊变量通常用于存储程序的

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War

CentOS系统使用yum命令报错问题及解决

《CentOS系统使用yum命令报错问题及解决》文章主要讲述了在CentOS系统中使用yum命令时遇到的错误,并提供了个人解决方法,希望对大家有所帮助,并鼓励大家支持脚本之家... 目录Centos系统使用yum命令报错找到文件替换源文件为总结CentOS系统使用yum命令报错http://www.cppc

变量与命名

引言         在前两个课时中,我们已经了解了 Python 程序的基本结构,学习了如何正确地使用缩进来组织代码,并且知道了注释的重要性。现在我们将进一步深入到 Python 编程的核心——变量与命名。变量是我们存储数据的主要方式,而合理的命名则有助于提高代码的可读性和可维护性。 变量的概念与使用         在 Python 中,变量是一种用来存储数据值的标识符。创建变量很简单,