2017-03-31 38 views
-1

Wikipedia给出了例子分段故障不存在的

#include <stdio.h> 
int main() 
{ 
char *p2; 
*p2='b'; 
return 0; 

} 

下方,并表示应引起分段故障,引述如下原因

这里,P2可以指向内存中的任何地方,所以执行赋值* p2 ='b';可能会破坏未知的记忆区域或触发分段故障。

但是,尽管凌动运行此,我没有得到任何error.I我越来越空白命令提示符

任何想法对你所说的这个

+4

此代码是未定义的行为:它可能会触发分段错误或者只是在不崩溃的情况下运行 – wasthishelpful

+1

它可能指向内存中的任何位置,因此它可能指向某处有效。从你的报价 –

+3

引用:“_may_点<...>,_can_ <...>触发段错误” – ForceBru

回答

0

,P2可以在任何地方点。当您尝试修改不属于操作系统提供给您的运行程序的内存的部分内存时,会出现分段错误错误。所以如果你没有得到seg错误,这意味着这个指针指向一个属于你的内存的地址。如果您重复运行此代码,您可能会遇到seg故障。