今天在堆代码的时候,堆了下面一段代码,Debug时异常,Release没问题。
const std::string &sFilename;
wchar_t *wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(sFilename.length()-1));
m_hDLL = ::LoadLibrary(/*stringToLPCWSTR(sFilename)*/stringToLPCWSTR(sFilename,wcstring));
if (wcstring)
{
delete []wcstring;
}
wcstring = NULL;
其实很简单,得到一个const std::string &类型的参数sFilename,想通过它来加载dll,但是::LoadLibrary的参数是LPCWSTR类型,就自己写个函数
LPCWSTR stringToLPCWSTR(std::string orig, wchar_t * wcstring)
来转换一下。
然后就在转换前动态申请了内存,并在使用后释放,如下:
wchar_t *wcstring = (wchar_t *)malloc(sizeof(wchar_t)*(sFilename.length()-1));
.......................................
if (wcstring)
{
delete []wcstring;
}
wcstring = NULL;
看起来貌似没问题