小弟前幾天去面試時,
面試官問了一個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內部運作無關,只是單純邏輯上的問題。
我答不出來,也沒有什麼頭緒,可以請板友幫忙解惑一下嗎?感謝!