2014-08-28 82 views
-2

我有一個簡單的程序,如:分配到整數的指針會導致系統崩潰

#include <stdio.h> 

int main(void){ 
*(int*) 1 = 1; 
return 0; 
} 

但爲什麼它給我段錯誤?

+1

你問是否會導致崩潰?它可能會。 – 2014-08-28 09:07:52

+0

這個任務的主意(目標)是什麼?你的程序試圖寫在一個非常錯誤的地方,所以它必須崩潰。 – Ilya 2014-08-28 09:11:21

+0

我正在嘗試編寫一個程序,該程序可以在不使用任何內置函數的情況下創建一個核心文件。 – 2014-08-28 09:23:05

回答

1

這很可能會導致大多數系統崩潰。分配

*(int*)1 = 1; 

試圖分配1的位置在內存中的地址1.這是非常不確定的行爲,並且在大多數系統中,當你嘗試它的內存保護機制引發錯誤。

1

您的代碼嘗試寫入地址爲0x01的內存。

當程序嘗試訪問不允許訪問的內存位置時,會發生分段錯誤。