我想知道除了 common 之外是否还有一种方法可以检查指针的有效性assert(NULL != ptr)
。我尝试了以下故意引发“访问错误”,因此我会及早收到警报,而不是最近在某些嵌套代码中访问指针时:
#if !defined _NDEBUG || defined _DEBUG
#define _check_ptr(ptr, type) do{type x; assert(NULL != ptr); x = *ptr;}while(0)
#else
#define _check_ptr(ptr, type)
#endif
关于这个话题有什么建议吗?
所需用例:
void func(int *ptr){
_check_ptr(ptr, int);
if (NULL != ptr){ // Still check in release
...
}
}
作为先决条件,完全可以接受 IDE 在访问错误时将我扔到调试器中。在我的情况下,我不会从命令行或 IDE 之外的某个地方运行调试构建。