小弟前几天去面试时,
面试官问了一个optimization的问题(a):
void initialize(Obj* myObj){
myObj->ptr->a = 0;
myObj->ptr->b = 0;
myObj->ptr->c = 0;
}
问我如何optimize这段程式,而我有回答出正确答案(b):
void initialize(Obj* myObj){
ptype* p = myObj->ptr;
^^^^^(假设为ptr指到的type)
p->a = 0;
p->b = 0;
p->c = 0;
}
接下来面试官问,虽然compiler会帮忙做optimize,
但在此例中compiler"不敢"直接把程式(a)compile成程式(b),
因为有出错的可能,问我为什么?
面试官并假设假设不会因为signal等原因而有interruption,
也跟compiler内部运作无关,只是单纯逻辑上的问题。
我答不出来,也没有什么头绪,可以请板友帮忙解惑一下吗?感谢!