关于陈皓同志微博的一系列玩法
(2012-07-09 21:34:47)
标签:
杂谈 |
@左耳朵耗子
发了个微博:史上最烂的C/C++示例:返回一个针 http://www.functionx.com/cpp/examples/returnpointer.htm
很多人觉得能跑出结果很奇怪,我反汇编看了全部代码,觉得很有意思,同时想出了一个面试题目,如下,请问如下程序执行的结果:
#include <iostream>
#include "stdint.h"
using namespace std;
struct tt
{
};
tt & GetWeeklyHours()
{
}
tt & GetWeeklyHours2()
{
}
int main()
{
}
当然,言归正传,还是分析代码,我是怎么想到这个搞法的,
我讲代码稍微修改了下,由double类型改为了,uint64_t,为什么这么改,不详细解释,主要是方便汇编调代码,因为返回double型,用eax,而不是rax,eax用gdb不方便看,64位的,info
r rax就可以看了。
下图是汇编执行的过程,并有解释,大家一看便知。因为是借助了%rax来返回这个值,因此。。我想到了那个题目,呵呵。