检查传递给函数的指针的有效性,也非 NULL 情况

问题描述 投票:0回答:0

除了常见的

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 之外的某个地方运行调试版本。

c pointers assertion fail-fast-fail-early
© www.soinside.com 2019 - 2024. All rights reserved.