VS内存访问冲突

aslanwu 2011-11-16 11:24:05
char* roflszObfuscate(char* s, short i)

{
unsigned long len = lolstrlen(s);
//unsigned char *z = (unsigned char*)s;
unsigned char c;

for (unsigned long l = 0; l < len / 2; l++)
{
c = s[l] ^ (l + i);
s[l] = s[len - (l + 1)] ^ (l + i);//内在访问冲突。
s[len - (l + 1)] = c;
}
return s;
}

在调用这个方法的时候,roflszObfuscate("lojrbz`bXPlbcftbAWo{iprckP", 3)就会在上面标注的地方内存访问冲突。这是怎么回事,如何解决?
...全文
118 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ningto.com 2011-11-16
  • 打赏
  • 举报
回复
roflszObfuscate("lojrbz`bXPlbcftbAWo{iprckP", 3)
这样传的字符串相当于一个常量, 常量是不允许修改的
yisikaipu 2011-11-16
  • 打赏
  • 举报
回复
要想改变系统默认属性,允许修改字符串字面常量
http://topic.csdn.net/u/20111115/00/519d7f3d-d447-46ea-ae9b-593c2b2d4e32.html
#14楼方法

在开头加一句#pragma comment(linker,"/SECTION:.rdata,RW")
yisikaipu 2011-11-16
  • 打赏
  • 举报
回复
默认情况下,系统不允许修改字符字面常量

试试这个:

char s[]="lojrbz`bXPlbcftbAWo{iprckP";
roflszObfuscate(s,3);

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧