往具体地址写数据时遇到的问题
来源:互联网 发布:exe网络验证 编辑:程序博客网 时间:2024/04/30 03:54
在驱动程序中,经常看到*(unsigned int *)0x56000000=0x12;
这样的直接给一个地址赋值的语句,这样的语句在应用程序中是不能直接用的,会出现段错误,LINUX系统不允许直接操作物理地址。
#include<stdio.h>
#define NFCONF *(volatile unsigned int *)0x0804a008
int main()
{
NFCONF=0x11223344;
return 0;
}
此程序编译时不会出错,但是在运行时会出现“段错误”!因为在系统下不允许直接访问内存,系统下访问内存要通过MMU和Cache。
下面程序是可以的:
#include <stdio.h>
int main()
{
int *a;
a=(int *)malloc(100);
printf("%p/n",a);
*a=0x11;
return 0;
}
用GDB的 x/20 0xXXXXXXXX可以看到,printf显示的地址上确实写上了数据,该地址是系统通过MMU之类的分配的,这样是允许的。
- 往具体地址写数据时遇到的问题
- 写内存池时遇到的问题
- 写sfss时遇到的问题
- 写留言板时遇到的问题
- 写reactnative时遇到的一些问题
- 写knn时遇到的一些问题
- 写论文遇到的问题
- 写通信协议遇到的问题
- NSMutableDictionary添加数据时遇到的问题
- 在写proxy_opengl.dll时遇到的问题.
- 我在写第一个extjs时遇到的问题
- C#写app.config时遇到的问题
- 用VS2005写MFC时遇到的问题汇总
- 用VS2008写MFC时遇到的问题汇总
- 多线程程序写日志时遇到加锁的问题
- 用VS2008写MFC时遇到的问题汇总
- 在编写PHP时遇到的一些小问题
- 写判断素数程序时遇到的小问题
- makefile
- SPI学习总结
- FindFirstFile和FindNextFile的用法
- 欧盟 物联网战略研究路线图 翻译稿 初稿 15
- 在WinForms程序里实现窗体传值的最佳实践
- 往具体地址写数据时遇到的问题
- linux 设置环境变量
- Eclipse智能提示完美设置
- 在BCB中使用JSONCPP需要注意的问题
- static关键字用法
- linux 一些有用的命令
- linux下分区大小改变及fdisk应用(转载)
- eclipse启动时弹出"Failed to create the Java Virtual Machine"解决办法
- 简单的重试技术来处理HTTP链接超时