【语言-C++】调试运行(在vs)Debug和Release 、以及独立运行Debug无错误,独立运行Release却出现崩溃

断点

经调试出现崩溃的地方为:

char* pStrTemp = new char[Len] ;

该函数代码如下

	char * Topchar(const CString &strSource)  
	{    
		CString STR;
		int Len = strSource.GetLength();

		STR.Format(_T("%d"),Len);
	//	AfxMessageBox(+ STR);
		char* pStrTemp = new char[Len] ;
		memset(pStrTemp,0,sizeof(char)*Len);
#ifdef _UNICODE
		DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,strSource,-1,NULL,0,NULL,FALSE);
		WideCharToMultiByte (CP_OEMCP,NULL,strSource,-1,pStrTemp,dwNum,NULL,FALSE);
		pStrTemp[dwNum]=0;  
		STR = pStrTemp;
	//	AfxMessageBox( STR);		
#elif//MBCS 工程强转 
		pStrTemp =/* (LPSTR)(LPCTSTR)*/strSource.GetBuffer();
#endif
		return pStrTemp;
	}  


原因

以下代码dwNum越界,导致内存数据紊乱二崩溃
pStrTemp[dwNum]=0;


解决方案

增加申请空间的大小:将
char* pStrTemp = new char[Len] ;

改为
char* pStrTemp = new char[Len+1] ;




你可能感兴趣的:(语言-C++)