我有一个代码,我使用指针访问一些数据块。在极少数情况下,数据块的一些成员是空的,因此指针变得悬空。事实上,我得到了正确的指针,但是当试图用指针做某事时程序崩溃了。
通常的建议是避免这种类型的使用。但遗憾的是,我使用的框架要求我使用这种类型的数据访问方法。
有没有办法在对指针进行任何操作之前“检查”指针是否无效?显然,检查指针是否不等于 NULL 不起作用。我也试过这个:
try
{
CString csClassName = typeid(*pMyPointer).name(); // Check error condition
// The line below fails due to dangling pointer (data block is not valid).
hr = pMyPointer->MyPointerMethod();
}
catch(bad_typeid)
{
return E_FAIL;
}
catch(...)
{
return E_FAIL;
}
这是正确的方法吗?