1
我發現了一個bug在現有的程序(C++自動生成的代碼)在該方法中:如何測試一個實例是否損壞?
void _CallStyle _WFObjectVarAsStringExtractEFAgent::LoadValue(Pointer __VarAddress, aType theVarType) {
absolute(tpPointer, VarAddress, __VarAddress);
aLightObject Obj = nil;
Obj = aLightObject(*VarAddress);
if (Obj == Nil) {
this->SetValue("");
} else {
this->SetValue(Obj->StringExtract(this->ExtractKind, this->ExtractParam, 0));
}
this->Lock();
if (Obj == Nil) {
this->Disable();
} else {
this->Enable();
}
}
有時行Obj = aLightObject(*VarAddress);
返回不是一個有效aLightObject
實例既不Nil
(但一個損壞aLightObject
實例)。
因此,在下面的行中if (Obj == Nil) {
我們輸入else
區塊,並且在嘗試執行Obj->StringExtract
調用時程序失敗。
我該如何測試Obj
實例是否有效?
你可能會更好地跟蹤並消除腐敗,而不是試圖處理它 – 2013-04-10 12:49:04
那麼這完全取決於「有效」對你的意義,不是嗎?除了「在標準允許的狀態」之外,沒有「有效」的普遍概念。 – 2013-04-10 12:49:16
編寫正確的代碼,以便您的對象始終「有效」(無論如何)。 – 2013-04-10 12:50:33