由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 一个小问题,请高人指点!
相关主题
求问CC150书上16.9的“multiple of alignment”是什么意思??谁给讲讲why alignment and padding are necessary?
CarerCup 书里面的关于memory的一道题问个结构体的大小问题
【回报本版】英伟达(NVIDIA)电话面试第二轮我遇到最糟糕的面试官
攒RP, 发N的面经32bit vs 64 bit
统计专业,会C,想做数据分析,求职业规划.问一道关于reverse a C-string的问题
弱问careercup 150书上low level的题Zillow screen 面经,兼打听工资
how to implement malloc?问一个C的简单问题
报个电面的面经和据信吧, 求安慰Ask 3 M interview questions
相关话题的讨论汇总
话题: double话题: cast话题: alignment话题: aligned话题: byte
进入JobHunting版参与讨论
1 (共1页)
p*****e
发帖数: 537
1
我想从integer bit-to-bit的cast到double:
int x = 0;
double f = *((double*)&x);
这个cast为啥一直是有效的?一个integer的地址是4-byte aligned,也就是说,valid
integer address should end with 0, 4, 8 or c. double是8-byte aligned, 也就
是,valid double address should end with 0 or 8.
那么如果x的地址是 end with 4 or c, 这个cast为啥还是有效的?
为了保证这个问题始终出现,我把程序改成:
int x[2] = {0, 0};
double f1 = *((double*)&x[0]);
double f2 = *((double*)&x[1]);
这样做保证x[0]和x[1]里始终有一个的地址不是 8-byte aligned,但最后的结果是f1
是0,f2是乱码,但都没报错。
这种cast为啥可以不考虑alignment?是compiler动了什么手脚吗?
s**x
发帖数: 7506
2
1) I do not think the alignment is enforced, you can always cast at any
address. the alignment may be true for some other machines, but not the
normal pc we work with.
2) as long as I understand, the alignment is just more efficient,
that is why you see alignment is data structures, malloc return values etc.
3) C is very flexible, you can cast any number to an address and do
something, I guess hackers like that a lot.
you have to know what you are doing.
1 (共1页)
进入JobHunting版参与讨论
相关主题
Ask 3 M interview questions统计专业,会C,想做数据分析,求职业规划.
c interview question弱问careercup 150书上low level的题
怎么把 integer 转为 multi-byte integer format? (转载)how to implement malloc?
一道面试题(integer to binary string)报个电面的面经和据信吧, 求安慰
求问CC150书上16.9的“multiple of alignment”是什么意思??谁给讲讲why alignment and padding are necessary?
CarerCup 书里面的关于memory的一道题问个结构体的大小问题
【回报本版】英伟达(NVIDIA)电话面试第二轮我遇到最糟糕的面试官
攒RP, 发N的面经32bit vs 64 bit
相关话题的讨论汇总
话题: double话题: cast话题: alignment话题: aligned话题: byte