- 主题:小白一问:随意指定地址的指针的行为
1. 不一定会segment fault
2. 不这么说的书本都是耍流氓
【 在 easior 的大作中提到: 】
:
: 以前的书本里讲指针,会一本正经地举例
: int *p = (int*)0x12345678;
: 煞有介事地说,解引用便可获得随意地址上的内存信息。
: 但操作系统根本不给面子,直接 segmentation fault。
--
FROM 49.199.208.*
是必然segment fault吗?我还以为只要地址在自己程序的空间里就可以访问
【 在 easior @ [CPlusPlus] 的大作中提到: 】
:
: 1. 只要对其操作,除去取地址之外,都会 segmentation fault
: 2. 既然有平台可以这么操作,确实应该写;最好也要提一下现代操作系统的工作方式
:
: 【 在 dpblue (deep blue) 的大作中提到: 】
--
FROM 49.183.53.*
我知道如果地址不在自己空间里肯定是崩的
想问问如果正好是自己程序可以访问的呢?也是必然崩吗?
【 在 oldwatch @ [CPlusPlus] 的大作中提到: 】
:
: 飞到未分配内存的话,对应页表项都找不到
:
: 【 在 dpblue (deep blue) 的大作中提到: 】
: : 是必然segment fault吗?我还以为只要地址在自己程序的空间里就可以访问
--
FROM 49.183.53.*
就是上面那个回复里
int i = 1; int* p = &i;
p里面存放的值
【 在 ilovecpp 的大作中提到: 】
: 取决于你“自己空间”是什么意思。
: :
--
FROM 49.183.53.*
我之前回复的意思是:瞎写的这个整数正好就是这个程序可以访问的地址,那就可以访问
但下面有人回复说必然会崩,所以把我搞迷糊了
【 在 ilovecpp 的大作中提到: 】
: 那可以。指针就是个整数,整数和整数是平等的,没有身份。
: 问题是像楼主那样你代码里直接写一个整数,这整数哪来的,你挺牛逼啊。
--
FROM 49.183.53.*