作者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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1567134830.A.727.html
1F:→ sarafciel: 你直接用page是丢unsigned char *回来 也就是指标 08/30 11:25
2F:→ sarafciel: 你如果是想让page内的值拆2byte出去给result应该这样写 08/30 11:29
3F:→ sarafciel: result=(*(unsigned long*)page & 0xffff0000) >> 16; 08/30 11:32
4F:→ sarafciel: 另外long的长度是会变的 我猜你是用32bit的机器? 08/30 11:35
5F:→ Lipraxde: 我猜 64bit 08/30 19:13
6F:→ liptonbin: 64bit没错 08/30 22:41
7F:→ dces4212: PIE吗 09/01 16:20
8F:推 b0920075: aslr吧,stack 上aslr本来就会起作用 09/01 19:02
9F:推 ando5566: 这时候你关掉小画家再执行又会变;重开机再执行也会变 09/07 21:02