读书人

请帮小弟我看下这段代码的有关问题

发布时间: 2012-01-06 22:55:18 作者: rapoo

请帮我看下这段代码的问题?

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平台下用
感觉也不好用

读书人网 >VC

热点推荐