看板 C_and_CPP 關於我們 聯絡資訊
*(int *)0 = 0;翻譯為asm如下: movl $0,%esp #把地址0x0存入esp movl $0,(%esp) #把0存入地址為0x0的地方。這就是出問題的地方。 ※ 引述《godman362 (Shizuru)》之銘言: : 如同標題:*(int *)0(數字0) = 0(數字0) : 這個語法是我在看驅動程式中一個範例看到的 : 寫出這行程式,他的意思是說提取一個NULL指標所造成的錯誤 : 但是我比較有疑問的是lvalue那段 : *(int *)0這句是什麼意思 : 一般取成變數的話,如:*(int *)var; : 這樣是將var這個位址的值取出不是嗎? : 但是寫成0表示什麼意義?不是variable又要如何assign值給它? : 請各位先進指點一下,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 60.191.37.122