免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3093 | 回复: 17
打印 上一主题 下一主题

谁深层次的解释一下这个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-28 23:35 |只看该作者 |倒序浏览
大家知道这行代码运行时会出现错误,谁能深入的解释一下为什么!内部是怎样的!


#include <stdio.h>

void main(){
        int *p=NULL;
        *p=5;
       
        printf("%d\n",*p);
}

论坛徽章:
0
2 [报告]
发表于 2009-05-29 00:21 |只看该作者
LZ 你真强。

你硬往 0 page 塞东东 -> OS 未实现 0 page 提交到物理存储 -> processor 给你抛出 #PF(page fault)异常 -> #PF handler 提醒你(你干嘛要硬塞!!)

算不算深入了,不算。偶不懂了。

论坛徽章:
0
3 [报告]
发表于 2009-05-29 02:51 |只看该作者
其实我感觉指针很容易, 你要给指针地址才能够取指针的值啊. 你p  = NULL  ,指针连地址都没有,

你如何把5放进去.  应该是P指象了一个地址,然后你在这个内存地址放入符合条件的值,然后才能通过*p取值.

论坛徽章:
0
4 [报告]
发表于 2009-05-29 02:55 |只看该作者
另外对指针和数组只要给头地址就可以, 因为知道了头地址就知道了数组或者指针的数据.  printf("%d", *p)  这个写法不好,.

论坛徽章:
0
5 [报告]
发表于 2009-05-29 06:47 |只看该作者
原帖由 iwaich 于 2009-5-28 23:35 发表
        int *p=NULL;
        *p=5;

这是不是往野指针所指的空间写内容?

论坛徽章:
0
6 [报告]
发表于 2009-05-29 06:54 |只看该作者
mov [0h], 5h

剩下的看 2 楼的回复。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2009-05-29 09:07 |只看该作者
原帖由 beepbug 于 2009-5-29 06:47 发表
        int *p=NULL;
        *p=5;
这是不是往野指针所指的空间写内容?

这是空指针,和野指针还不是一回事。

论坛徽章:
0
8 [报告]
发表于 2009-05-29 09:09 |只看该作者

回复 #7 MMMIX 的帖子


又被逮了

论坛徽章:
0
9 [报告]
发表于 2009-05-29 09:11 |只看该作者

回复 #6 langue 的帖子

您这样写还真不对。

按 intel 语法要:mov dword ptr [0], 5h

按编译器,一般都生成:
mov eax, 0
mov dword ptr [eax],5h

论坛徽章:
0
10 [报告]
发表于 2009-05-29 10:11 |只看该作者

回复 #9 mik 的帖子

谢谢指正!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP