指针:尝试通过添加大数字来取消引用指针时读取访问冲突
发布时间:2020-12-16 10:07:53 所属栏目:百科 来源:网络整理
导读:我正在尝试更多地探索指针,下面是我正在尝试的一段示例代码 这有效: int *arth,art;art = 100;arth = art;printf("arth address is %p arth+1 value is %d",arth,*(arth + 1)); 现在,如果我尝试向关节添加一个大数字,我得到读取访问冲突 这不是: printf("a
我正在尝试更多地探索指针,下面是我正在尝试的一段示例代码
这有效: int *arth,art; art = 100; arth = &art; printf("arth address is %p arth+1 value is %d",arth,*(arth + 1)); 现在,如果我尝试向关节添加一个大数字,我得到读取访问冲突 这不是: printf("arth address is %p arth+1 value is %d",*(arth + 1000)); 错误:
问: 解决方法
arth指向int的单个实例.将任何非零值添加到关节并随后取消引用该新指针值将读取原始int范围之外的内存位置.这会调用
undefined behavior.
对于未定义的行为,任何事情都可能发生您的程序可能会崩溃,它可能会输出奇怪的结果,或者它可能似乎正常工作.事实上,你没有在*(关节1))情况下崩溃,但确实在*(关节1000)上崩溃)就是一个例子. 仅仅因为程序没有崩溃并不意味着它没有做错事. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |