作者liptonbin (我還存在耶)
看板C_and_CPP
標題[問題] 請問linux小程式
時間Fri Aug 30 11:13:47 2019
請教一下
最近在看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
→ sarafciel: 你直接用page是丟unsigned char *回來 也就是指標 08/30 11:25
→ sarafciel: 你如果是想讓page內的值拆2byte出去給result應該這樣寫 08/30 11:29
→ sarafciel: result=(*(unsigned long*)page & 0xffff0000) >> 16; 08/30 11:32
→ sarafciel: 另外long的長度是會變的 我猜你是用32bit的機器? 08/30 11:35
→ Lipraxde: 我猜 64bit 08/30 19:13
→ liptonbin: 64bit沒錯 08/30 22:41
→ dces4212: PIE嗎 09/01 16:20
推 b0920075: aslr吧,stack 上aslr本來就會起作用 09/01 19:02
推 ando5566: 這時候你關掉小畫家再執行又會變;重開機再執行也會變 09/07 21:02