记录一下使用CString::MakeLower可能导致的crash的一个问题:

问题重现:

int _tmain(int argc, _TCHAR* argv[])
{
 std::string  sTmp = ":U鬱躺衻撅伙";//参照下面参考三
 CString str  = sTmp.substr(0,sTmp.size() - 1).c_str();
 str.TrimRight();      
 str.MakeLower(); //抛出异常
 return 0;
}

-=-=-=-=-=backtrace  -=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-

KernelBase.dll!7693b727()  
  [下面的框架可能不正确和/或缺失,没有为 KernelBase.dll 加载符号] 
  KernelBase.dll!7693b727()  
  msvcr80d.dll!_CxxThrowException(void * pExceptionObject=0x0018f974, const _s__ThrowInfo * pThrowInfo=0x0042e180)  行161 C++
> test.exe!ATL::AtlThrowImpl(HRESULT hr=E_FAIL)  行77 C++
  test.exe!ATL::AtlCrtErrorCheck(int nError=42)  行48 C++
  test.exe!ATL::Checked::mbslwr_s(unsigned char * _Str=0x002ac0d8, unsigned int _SizeInChars=15)  行161 + 0x20 字节 C++
  test.exe!ATL::ChTraitsCRT<char>::StringLowercase(char * psz=0x002ac0d8, unsigned int size=15)  行462 + 0xd 字节 C++
  test.exe!ATL::CStringT<char,ATL::StrTraitATL<char,ATL::ChTraitsCRT<char> > >::MakeLower()  行1768 + 0x10 字节 C++
  test.exe!main(int argc=1, char * * argv=0x003f5198)  行18 C++
  test.exe!__tmainCRTStartup()  行597 + 0x19 字节 C
  test.exe!mainCRTStartup()  行414 C
  kernel32.dll!760233ca()  
  ntdll.dll!76ef9ed2()  
  ntdll.dll!76ef9ea5()

-=-=-=-=-=-=-=-=-backtrace-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

参考:

1. CString::MakeLower() + Chinese Windows = crash

2. CString::MakeUpper crashes on german umlaut, if language is japanese,微软给出了回复,同时在这里给出了解决方案http://forums.microsoft.com/msdn/default.aspx

3.CString::MakeLower() 崩溃问题 ,这里讲的原因确实会出现crash。

CString::MakeLower Crash的更多相关文章

  1. MFC 字符串类CString 源代码

    原文:http://blog.csdn.net/benny5609/article/details/1926088 CString使用的是引用技术,可以共享数据(这个大家都知道),另外空的CStirn ...

  2. C++——CString用法大全

    列表形式的如下: CString的构造函数CString( );例:CString csStr; CString( const CString& stringSrc );例:CString c ...

  3. CString用法总结

    概述:CString是MFC中提供的用于处理字符串的类,是一种很有用的数据类型. 它很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作时方便了很多. 不管怎样,使用CString有很多的特殊 ...

  4. 【转载】C++——CString用法大全

    CString常用方法简介 作者:webmaster 出处:无 CString::Compareint Compare( LPCTSTR lpsz ) const;返回值  字符串一样 返回0     ...

  5. VC:CString用法整理(转载)

    1.CString::IsEmpty BOOL IsEmpty( ) const; 返回值:如果CString 对象的长度为0,则返回非零值:否则返回0. 说明:此成员函数用来测试一个CString ...

  6. Cstring 的用法

    CString位于头文件afx.h中. 这篇文章就来讨论这些技巧. 使用CString可以让你对字符串的操作更加直截了当.这篇文章不是CString的完全手册,但囊括了大部分常见基本问题. 这篇文章包 ...

  7. CString(转)

    CString::Compare int Compare( LPCTSTR lpsz ) const; 返回值   字符串一样  返回0 小于lpsz  返回-1 大于lpsz  返回1 区分大小字符 ...

  8. VS2010/MFC编程入门之四十二(MFC常用类:CString类)

    上一节鸡啄米讲了分割窗口的有关知识,本节开始讲解MFC的一些常用类,先来说说CString类. CString类简介 CString类作为MFC的常用类,当之无愧.可以这样说,只要是从事MFC开发,基 ...

  9. VS2010-MFC(MFC常用类:CString类)

    转自:http://www.jizhuomi.com/software/228.html CString类简介 CString类作为MFC的常用类,当之无愧.可以这样说,只要是从事MFC开发,基本都会 ...

随机推荐

  1. 位数问题(dp 递推)

    位数问题 时间限制: 1 Sec  内存限制: 128 MB提交: 35  解决: 19[提交][状态][讨论版][命题人:quanxing] 题目描述 在所有的N位数中,有多少个数中有偶数个数字3? ...

  2. angular 三大核心函数

    1.$watch  angular监听   由于angular一直在实时监听,所以比react和vue效率要低 $scope.$watch('aModel', function(newValue, o ...

  3. php 中php-fpm 的重启、终止操作命令

    php 中php-fpm 的重启.终止操作命令: service nginx restart service php-fpm restart 查看php-fpm进程数:ps aux | grep -c ...

  4. javascript原型继承中的两种方法对比

    在实际的项目中,我们通常都是用构造函数来创建一个对象,再将一些常用的方法添加到其原型对象上.最后要么直接实例化该对象,要么将它作为父类,再申明一个对象,继承该父类. 而在继承的时候有两种常用方式,今天 ...

  5. SMO是英文SQL Server Management Objects的缩写(上一篇文章的补充)

    最近在项目中用到了有关SQL Server管理任务方面的编程实现,有了一些自己的心得体会,想在此跟大家分享一下,在工作中用到了SMO/SQL CLR/SSIS等方面的知识,在国内这方面的文章并不多见, ...

  6. leetcode598

    public class Solution { public int MaxCount(int m, int n, int[,] ops) { ); ); || col == ) { return m ...

  7. python3导入自定义模块

    模块是个好东西啊,大牛们开源共享许多模块也加快了大家开发的速度,许多开源模块可以在这里找到 ↓ https://pypi.python.org/pypi 因为刚入门所有有很多细节不懂,在网上搜寻资料的 ...

  8. dokuwiki安装问题

    工作了几年,虽然在程序员这个道路上才算开始,希望以后能够有所成长,为了把平时遇到的技术问题,记录下来,第一个想到的就是写wiki,博客虽然创建了许久,但是没有坚持写下去,在网上找了许多的wiki程序, ...

  9. c++策略模式(Strategy Method)

    别人的博客再讲策略模式时都会讲三国,策略类就是赵云的锦囊,锦囊里装着若干妙计.在打仗时想要用什么妙计,直接从锦囊里去取. 锦囊类: class context { public: context(IS ...

  10. 633. Sum of Square Numbers 是否由两个完全平方数构成

    [抄题]: Given a non-negative integer c, your task is to decide whether there're two integers a and b s ...