- C/C++ code
char* buf = (char*)LocalAlloc(LPTR, 8); //::ZeroMemory(buf, 8); /* 遍历字符串进行转码 */ while( *pWork != 0x0 ) { ::ZeroMemory(buf, 8); if ( *pWork != '!' && *pWork != '@' && *pWork != '#' && *pWork != '$' && *pWork != '&' && *pWork != '*' && *pWork != '(' && *pWork != ')' && *pWork != '=' && *pWork != ':' && *pWork != '/' && *pWork != ';' && *pWork != '?' && *pWork != '+' && *pWork != '\'' && *pWork != '.' ) { sprintf_s(buf, d_size, "%%%2x", *pWork); //strcat_s(des, d_size, buf); } else { sprintf_s(buf, d_size,"%c", *pWork); } strcat_s(des, d_size, buf); pWork++; } LocalFree(buf);//问题出在这里
纯 MSIL 公共语言运行库支持(/clr:pure)--。使用这个选项能运行,但有时出现托管错误
公共语言运行库支持(/clr)--使用这个选项能运行,但有LocalFree(buf)会中断,EAP[RSAEnCrypt.exe]: Heap block at 001BA9D8 modified at 001BA9E8 past requested size of 8
Windows 已在 RSAEnCrypt.exe 中触发一个断点。
其原因可能是堆被损坏,这也说明 RSAEnCrypt.exe 中或它所加载的任何 DLL 中有 bug。
其他选项编译不能通过。
为什么会在LocalFree(buf)这出问题,麻烦名位指点迷津,先行谢过!
------解决方案--------------------
没看到托管代码。。。。。。。你不需要添加托管编译选项
------解决方案--------------------
我不用带_s的函数,哈哈
这个只能在Windows平台下用
感觉也不好用