如何给一个实际物理地址对应的内存空间赋值?
来源:互联网 发布:ubuntu steam os 编辑:程序博客网 时间:2024/05/21 22:46
比如说给出指定的内存地址:0x12ff7c,然后想给这个内存地址赋值整数 55
都说用:
都说用:
int *b = (int *)0x12ff7c;
*b = 55;
*b = 55;
这样的方式赋值。
*((int *)0x12ff7c) = 55;
至于这里为什么选择内存地址0x12ff7c,而不选择别的地址,比如0xff00等。这仅仅是为了方便在Visual C++ 6.0上测试而已。如果你选择0xff00,也许在执行*p = 0x100;这条语句的时候,编译器会报告一个内存访问的错误,因为地址0xff00处的内存你可能并没有权力去访问。既然这样,我们怎么知道一个内存地址是可以合法的被访问呢?也就是说你怎么知道地址0x12ff7c处的内存是可以被访问的呢?其实这很简单,我们可以先定义一个变量i,比如:
1
int i = 0;
变量i所处的内存肯定是可以被访问的。然后在编译器的watch窗口上观察&i的值不就知道其内存地址了么?这里我得到的地址是0x12ff7c,仅此而已(不同的编译器可能每次给变量i分配的内存地址不一样,而刚好Visual C++ 6.0每次都一样)。你完全可以给任意一个可以被合法访问的地址赋值。得到这个地址后再把“int i = 0;”这句代码删除。一切“罪证”销毁得一干二净,简直是做得天衣无缝。
至于这里为什么选择内存地址0x12ff7c,而不选择别的地址,比如0xff00等。这仅仅是为了方便在Visual C++ 6.0上测试而已。如果你选择0xff00,也许在执行*p = 0x100;这条语句的时候,编译器会报告一个内存访问的错误,因为地址0xff00处的内存你可能并没有权力去访问。既然这样,我们怎么知道一个内存地址是可以合法的被访问呢?也就是说你怎么知道地址0x12ff7c处的内存是可以被访问的呢?其实这很简单,我们可以先定义一个变量i,比如:
1
int i = 0;
变量i所处的内存肯定是可以被访问的。然后在编译器的watch窗口上观察&i的值不就知道其内存地址了么?这里我得到的地址是0x12ff7c,仅此而已(不同的编译器可能每次给变量i分配的内存地址不一样,而刚好Visual C++ 6.0每次都一样)。你完全可以给任意一个可以被合法访问的地址赋值。得到这个地址后再把“int i = 0;”这句代码删除。一切“罪证”销毁得一干二净,简直是做得天衣无缝。
1 0
- 如何给一个实际物理地址对应的内存空间赋值?
- WinCE中的虚拟地址和实际的物理地址是如何对应
- ARM LINUX内核如何确定自己的实际物理地址
- 给一个物理地址,不是自己的,如何去到地图定位
- 如何将一个对象赋值给指定类型的数据?
- python如何给字典的键对应的值为字典项的字典赋值
- 对象之间如何赋值才有各自独立的内存空间
- 如何访问一个进程的内存空间
- 如何访问一个进程的内存空间
- Delphi如何访问一个进程的内存空间
- 如何访问一个进程的内存空间
- 解析IP对应的物理地址
- 设计一个程序,为二维数组动态的分配内存空间并且释放内存空间;数组元素的赋值结果如下:
- Javascript面试题:如何给一个Javascript的对象属性赋值?如何取得属性值?
- Javascript面试题:如何给一个Javascript的对象属性赋值?如何取得属性值?
- 用户空间的虚拟地址如何转换得到实际的物理地址
- oracle 如何将一个表的某个字段赋值给另一张表的某个字段
- 如何给easyUi的input框赋值
- 网络图片查看器
- c++65
- Jquery扫描二维码的简单实现
- android MVVM模式初体验--(一)
- 第一篇博客
- 如何给一个实际物理地址对应的内存空间赋值?
- 使用SSH时there is no action mapped for namespace[/]错误的解决方案
- 2016年12月4日学习总结----阶段总结
- 代码整洁之道读书笔记(八)
- cp 命令
- 使用多行文本Textarea大小设置与resize属性结合使用
- 串匹配 KMP
- QuickHit项目源代码及小总结
- Redis基础学习--持久化(数据备份与恢复)、复制、安全、通信协议、管理工具