对一个未做声明的地址进行访问
来源:互联网 发布:网络推广的书籍 编辑:程序博客网 时间:2024/05/29 17:33
例子一:
int main(char argc,char* argv[ ])
{
char *p;
p=0x080000;
*p=3; //1
return 0;
}
程序在1处奔溃,因为p的地址是任意分配的,不知道系统是否已经使用这个地址,这么做是危险的。
正确的做法:
int main(char argc,char* argv[ ])
{
char *p,i;
p=&i;
*p=3; //1
return 0;
}
这样程序才不会奔溃。例子二:
struct S {
int i;
int *p;
}
int main(char argc,char* argv[ ])
{
S s;
int *p=&s.i;
p[0]=4;
p[1]=3;
s.p=p;
s.p[1]=1;//1
s.p[0]=2;//2
return 0;
}
程序将在2处奔溃,原因是s.p[1]=*(&s.i+1)=s.p,所以s.p[1]与s.p指向同个内存空间,s.p[1]=s.p=1即s.p[0]指向内存为1的地址,此时p的地址不再指向s.i的地址了。
s.p[0]=2;// *((int *)1) =2;对未定义的地址空间赋值,会出错
正确做法:对调//1和//2
即
s.p[0]=2;//2
s.p[1]=1;//1
程序不会出错,因为刚开始s.p还是指向s.i的空间,s.p[0]=2实际上是对s.i=2赋值;而s.p[1]=1,将s.p的地址空间指向内存为1 的地址。(虽然这样不大好)
0 0
- 对一个未做声明的地址进行访问
- C++指针之对未声明的地址进行访问
- 指针之对未声明的地址进行访问
- Filter 对未登录用户访问地址的控制
- 错误:未报告的异常错误,必须对其进行捕获或声明以便抛出
- 近期做项目对ContentPrivoder的使用进行一个总结
- 出现“未报告的异常错误,必须对其进行捕获或声明以便抛出”的解决
- 错误:未报告的异常 java.io.IOException;必须对其进行捕捉或声明以便抛出
- 未启用对服务器的远程访问
- endnote,出现"试图越过其尾端对一个未命名的文件进行读写" 错误
- 用CFile类时,遇到“试图越过其尾端对一个未命名的文件进行读写”
- CISCO ASA5505在只有一个公网地址的情况下,做内部服务器端口映射供外网访问!!
- 未声明的标识符
- java中使用javac编译时报错:未报告的异常 java.net.MalformedURLException;必须对其进行捕捉或声明以便抛出
- 一个地址薄的小程序,JAVA GUI界面,对文件进行随机读写。
- 做一个问卷考试,标准答案对比用户填写的答案,array_diff 进行差集比对
- 如何对一张表里的一个字段进行按周或按季度求和统计! 未验证
- 对可能用到的类做前置声明
- Mongodb学习总结(1)——常用NoSql数据库比较
- 分布式与集群的区别
- Android开发之App Widget(三)
- java加载jar包和自定义class文件加载
- 项目解决问题记录
- 对一个未做声明的地址进行访问
- Ubuntu server 14.04 安装图形界面及相关配置
- php测试mysql数据库连通性并且在浏览器每一秒输出一次结果
- Android NDK学习笔记9-JNI调用Java方法
- 第四周项目4 建立双链表算法库
- BZOJ网络流+费用流:【1221[HNOI2001] 软件开发】
- Mina和openfire
- Android开发:Handler异步通信机制全面解析(包含Looper、Message Queue)
- Switch语句注意事项