关于给指定内存地址赋值
2017-01-10 11:02
176 查看
最近看《C语言深度解剖》一书关于“将数值存储到指定内存地址”的问题(p88)书上说赋值方式为:
或者
这里的地址0x12ff7c是作者先定义的一个变量 “int i = 0” 查看到的i的地址再把“int i = 0;”删掉。
看起来这个是合理的,我在网上查的一些代码也是这样写的,但是,当我把代码运行的时候就出现了段错误。
经过网上查找归结原因大概为:要写的内存地址被系统保护不能随便改,我又随便换了几个地址同样不行。所以感觉这种直接给地址赋值的行为是操作系统不欢迎的,容易引起错误。知道理论上可以这么写实际中还是少用吧。
int *p=(int *)0x12ff7c; *p=0x100;
或者
*(int*)0x12ff7c=0x100;
这里的地址0x12ff7c是作者先定义的一个变量 “int i = 0” 查看到的i的地址再把“int i = 0;”删掉。
看起来这个是合理的,我在网上查的一些代码也是这样写的,但是,当我把代码运行的时候就出现了段错误。
/* Ubuntu 16.04.1 LTS \n \l */ #include<stdio.h> int main() { //int i; int *p=(int *)0x7fffffffdd4c; *p=0x100; printf("i=%d\n",*(int *)0x7fffffffdd4c); return 0; } root@ubuntu:/mnt/hgfs/WinLinshare# ./a.out 段错误 (核心已转储)
经过网上查找归结原因大概为:要写的内存地址被系统保护不能随便改,我又随便换了几个地址同样不行。所以感觉这种直接给地址赋值的行为是操作系统不欢迎的,容易引起错误。知道理论上可以这么写实际中还是少用吧。
相关文章推荐
- 用C语言给指定的内存地址赋值(通过指针)
- 关于linux中内核编程中结构体的赋值操作(结构体指定初始化)
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何实现从字符串中提取需要的字符并赋值给指定单元格内
- 赋值到指定的内存地址
- 用C语言给指定的内存地址赋值(通过指针)
- C语言中给指定的内存地址赋值(通过指针)
- 关于linux中内核编程中结构体的赋值操作 (结构体指定初始化)
- 关于给处于编辑中的datagrid的编辑框指定宽度的问题
- 关于JS客户端对服务器控件赋值,Post后不能保留值的解决办法
- 关于如何在子窗口中选择后,在父窗口赋值并让输入框设为只读。
- 关于“未指定的错误”的问题 的比较正解的解决方法
- tc 如何用指针实现访问指定内存地址
- 关于JS客户端对服务器控件赋值,Post后不能保留值的解决办法
- 关于“未指定的错误”的问题 的比较正解的解决方法
- 把共享库(SO)加载到指定的内存地址
- 关于ASP.NET2.0页面内回车自动执行指定按钮事件
- 今天碰到的一个问题,关于通过基类对象的引用给子类赋值
- 关于JS客户端对服务器控件赋值,Post后不能保留值的解决办法
- 关于foxmail的研究2----找到帐户邮件箱的指定路径篇
- 把共享库(SO)加载到指定的内存地址