帮忙!指定内存写入数据时,发生错误!

NULL-- 2013-01-02 08:34:09
把指定数据写入内存。
VC2010环境下,提示一下错误:



#include<stdio.h>
int main()
{
int i = 10;
int *p = (int *)0x41139E;
*p = 0x100;
printf("%d\n",*p);
}
...全文
351 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
NULL-- 2013-01-03
  • 打赏
  • 举报
回复
引用 8 楼 tianweishuiguo 的回复:
从你的代码上的汇编来看,你0x0041139e是int i = 10;这条指令的地址,代码段是不能写入的,想看i的地址,得看相应的register,并且,i是临时变量,地址也不是确定的
谢谢!那怎样在指定的内存写入指定数据,而不是随机的去试内存地址?还有 VC2010上, 怎么看变量i的内存地址?
ForestDB 2013-01-03
  • 打赏
  • 举报
回复
0x41139E是int i = 10;这句对应的汇编码存放的地址,而不是i的地址 i的地址用&i即可获得
东大坡居士 2013-01-02
  • 打赏
  • 举报
回复
从你的代码上的汇编来看,你0x0041139e是int i = 10;这条指令的地址,代码段是不能写入的,想看i的地址,得看相应的register,并且,i是临时变量,地址也不是确定的
NULL-- 2013-01-02
  • 打赏
  • 举报
回复
引用 6 楼 vic_chang 的回复:
不能随便向指定的内存中写数据。 windows系统为每个进程分配一块内存,每个进程只能操作自己的内存区,不可操作其他进程块中的内存数据的。如果随意充许跨进程块内存写操作,很容易追成进程崩溃. 系统不不太安全了。 如果非要跨进程内存块操作的话,需要供助windows 远程进程调用才可以的。 所以,如果不清楚某个内存地址的是否属于当前进程的可写操作地址,不要随便进行……
i的地址,不是0x41139E吗?定义指针指向该地址,再写入数据,有问题?
vic_chang 2013-01-02
  • 打赏
  • 举报
回复
不能随便向指定的内存中写数据。 windows系统为每个进程分配一块内存,每个进程只能操作自己的内存区,不可操作其他进程块中的内存数据的。如果随意充许跨进程块内存写操作,很容易追成进程崩溃. 系统不不太安全了。 如果非要跨进程内存块操作的话,需要供助windows 远程进程调用才可以的。 所以,如果不清楚某个内存地址的是否属于当前进程的可写操作地址,不要随便进行写。
PIE 2013-01-02
  • 打赏
  • 举报
回复
好像写到了文字常量区。
NULL-- 2013-01-02
  • 打赏
  • 举报
回复
引用 2 楼 sha_jinhao 的回复:
这块内存不可以写
你好,能具体解释下吗
NULL-- 2013-01-02
  • 打赏
  • 举报
回复
引用 1 楼 Soiol 的回复:
C/C++ code?1234567#include<stdio.h>int main(){ int i = 0x100; int *p = &i; printf("%d\n",*p);}//256
你好,我是要在指定内存写入指定数据
jimette 2013-01-02
  • 打赏
  • 举报
回复
这块内存不可以写
DaiwjDev 2013-01-02
  • 打赏
  • 举报
回复

#include<stdio.h>
int main()
{
    int i = 0x100;
    int *p = &i;
    printf("%d\n",*p);
}//256

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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