2017-03-31 30 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故障。