请教关于指针回绕
c++吧
全部回复
仅看楼主
level 11
whatofor 楼主

求助关于指针回绕具体的原理,什么情况下可能出现指针回绕等。
@良化纲领_
@RichSelian
@SergeiSobolev

2011年11月17日 14点11分 1
level 11
whatofor 楼主
没啊。 看到 "123"+14,这样的表达式 有人说可能产生指针回绕。
之前没怎么了解这个名词,就来寻求下答案了。
2011年11月17日 14点11分 3
level 14
百度"A20地址线",应该有你想要的...
没的话再来
2011年11月17日 14点11分 4
level 15
en.喂鸡.org/wiki/Integer_overflow
Since an arithmetic operation may produce a result larger than the
maximum representable value, a potential error condition may result. In
the C programming language, signed integer overflow causes undefined behavior, while unsigned integer overflow causes the number to be reduced modulo a power of two, meaning that unsigned integers "wrap around" on overflow.
擦,还有这种意思……[拍砖]
难怪我听说溢出越界的说法都有。。。

2011年11月17日 14点11分 6
level 8
循环链表 可以实现么?
2011年11月17日 14点11分 7
level 11
2011年11月17日 14点11分 8
level 14
学习了,那么指针是unsigned还是unsigned?表示不知道[瞌睡]
2011年11月17日 14点11分 9
level 15
我是说wrap around,其实这里和指针没关系……[拍砖]
2011年11月17日 15点11分 10
level 12
一般认为指针是unsigned
2011年11月17日 16点11分 11
level 12
严格地讲这里用“越界”比较严谨。溢出是另一个概念了。
2011年11月17日 16点11分 12
level 15
LZ的主题是越界。但这里的用法是算术溢出。
2011年11月17日 16点11分 13
level 14
我觉得都无所谓[大笑]或者说程序猿不需要关心.
如果想用unsigned 就转成uintptr_t,否则转intptr_t
而两个指针的减法的结果,这个程序猿应该要用的,ptrdiff_t,是有符号的.
2011年11月18日 01点11分 14
level 12
其实是有区别的。Win32系统里0x80000000~0xFFFFFFFF的是设备内存。
2011年11月18日 05点11分 15
level 14
你说的是物理地址?还是进程虚空间的2G地址?
不管在哪儿,也不管怎么用指针,你的应用程序栈不会跑那个地方去吧?你的堆也不会吧?
那你的指针也不会,所以不需要关心.[鲁拉]再说不同的OS内核空间都不一样,设备映射就更不一样.即便你写driver,也不需要关系你的指针在哪儿.

2011年11月18日 06点11分 16
level 15
关心指针再哪……写OS或者linker script之类的时候再操心吧……
2011年11月18日 06点11分 17
level 12
显然不是物理地址,否则32位系统就只能认2G内存了
2011年11月18日 07点11分 18
level 11
32位OS不用paging做虚拟空间就有点浪费了,不过只要保护得当,应该不会指到driver吧
毕竟微内核把driver放到外围似乎也不太明智
至于物理地址在哪里,其实OS也不那么关心……给定page allocator和page map的情况下,虚拟空间的地址基本上足够说明问题了(当然某些等值映射区是特例)

2011年11月19日 04点11分 19
level 14
嗯,是的.即便指针指到了driver空间,ring3下是readonly的page[鲁拉]最多出一个access violation而已
2011年11月19日 09点11分 20
level 11
最近看了一点microkernel的资料,感觉稍微有点纠结
似乎微内核和服务的界限也模模糊糊的……球十三叔指导(你当时的课设是模仿minix的对吧……)
2011年11月19日 09点11分 21
level 11
补充一下的话,就是感觉像driver之类的东西不该拿出去,但放进内核又看上去有点妥协
另外系统调用的效率似乎也糟一点?
2011年11月19日 09点11分 22
1 2 尾页