[問題] 請問linux小程式

看板C_and_CPP (C/C++)作者 (我還存在耶)時間6年前 (2019/08/30 11:13), 編輯推噓2(207)
留言9則, 6人參與, 6年前最新討論串1/1
請教一下 最近在看linux code 底下的result,result1是怎麼算出來的 為什麼每次執行都不同 謝謝 #include <stdio.h> main() { unsigned char page[4] = {0xaa,0xbb,0xcc,0xdd}; unsigned long result; unsigned long result1; result=((unsigned long)page & 0xffff0000) >> 16; result1=(unsigned long)(page) & 0x0000ffff; printf("result=%ld\n",result); printf("result1=%ld\n",result1); } #./test result=6924 result1=14832 #./test result=55990 result1=36272 #./test result=37106 result1=27808 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.50.149.237 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1567134830.A.727.html

08/30 11:25, 6年前 , 1F
你直接用page是丟unsigned char *回來 也就是指標
08/30 11:25, 1F

08/30 11:29, 6年前 , 2F
你如果是想讓page內的值拆2byte出去給result應該這樣寫
08/30 11:29, 2F

08/30 11:32, 6年前 , 3F
result=(*(unsigned long*)page & 0xffff0000) >> 16;
08/30 11:32, 3F

08/30 11:35, 6年前 , 4F
另外long的長度是會變的 我猜你是用32bit的機器?
08/30 11:35, 4F

08/30 19:13, 6年前 , 5F
我猜 64bit
08/30 19:13, 5F

08/30 22:41, 6年前 , 6F
64bit沒錯
08/30 22:41, 6F

09/01 16:20, 6年前 , 7F
PIE嗎
09/01 16:20, 7F

09/01 19:02, 6年前 , 8F
aslr吧,stack 上aslr本來就會起作用
09/01 19:02, 8F

09/07 21:02, 6年前 , 9F
這時候你關掉小畫家再執行又會變;重開機再執行也會變
09/07 21:02, 9F
文章代碼(AID): #1TQ9HkSd (C_and_CPP)
文章代碼(AID): #1TQ9HkSd (C_and_CPP)