-3
A
回答
0
把這個變成一個完整的程序,segv.c:
int
main(
void)
{
*(int *) 0 = 'X';
return 0;
}
和編譯:
clang -Oz -Wno-error -s -o segv segv.c
現在,當我在我的64位GNU/Linux系統上運行它,我做實際上得到了一個段錯誤:
fish: "./segv" terminated by signal SIGSEGV (Address boundary error)
但是,如果你正在尋求產生段錯誤,就像com中的一些人有些人指出,你應該使用raise(3)
從signal.h
。
3
*(int *)0='X';
的行爲是undefined。
編譯器可以自由地做任何事情,它爲所欲爲。 (i)提出一個SIGSEGV,(ii)根本不編譯該線有兩種可能性。
要明確地生成故障,使用raise
酌情(在<signal.h>
定義)。
+0
編譯器不會引發內存管理中斷。 –
+0
好吧,除了MSVC .. –
相關問題
- 1. int x {};和int x = 0;?
- 2. int [] x;有什麼區別?和int x [];?
- 3. 爲什麼x^0 = x?
- 4. 爲什麼x 0在這裏,x = 1語句中發生了什麼?
- 5. 信號SIGABRT 0
- 6. int test [] = new int [0]是什麼意思?
- 7. 什麼是qsort void * x和*(int *)x?
- 8. stm32f405產生觸發信號pwm
- 9. 爲什麼我的隨機發生器只產生0的?
- 10. 爲什麼(int)(1.0/x)其中x = 0會導致In32.MinValue而不是Int32.MaxValue?
- 11. 爲什麼(int)Math.random()* 10在Java中產生10?
- 12. 什麼是產生
- 13. C++:int * x [5]和int(* x)[5]之間有什麼區別?
- 14. C中`extern int(x)[]`和`extern int x []`有什麼區別?
- 15. 爲什麼Java允許int x []和int [] x?
- 16. 以0開頭的int發生了什麼?前00101
- 17. 生產者 - 消費者,爲什麼不實施它與一個信號?
- 18. 信號不能產生核心轉儲信號處理器
- 19. 什麼是「this.x = x <0?0:x; this.y = y <0?0:y;」意思?
- 20. make([] int,0),[] int {}和* new([] int)有什麼區別?
- 21. 什麼是從Arduino的產生的PWM信號的確切頻率銷
- 22. 爲什麼不能爲單行向量x [:,0] = x [0]?
- 23. array.last [x]發生了什麼?
- 24. 當我使用*(int *)&x分配一個常量值x時會發生什麼?
- 25. C++什麼是'int x =(anyInt1,anyInt2);'意思?
- 26. 的Python爲什麼INT(「0」)返回false
- 27. int max =〜0;這是什麼意思?
- 28. 「int mask =〜0;」的用途是什麼?
- 29. 爲什麼INT返回0 - C++
- 30. math.random,只產生一個0?
是,在大多數POSIX系統,你會得到一個SIGSEGV。附: - 你無法編譯這個的任何特定原因,並自己測試它? –
要生成信號,您必須明確生成它們。未定義的行爲對此不可靠。 –
也許相關[什麼是「*((的char *) - 1)= 'X';」?代碼的意思(http://stackoverflow.com/q/20844863/1708801) –