断言机制(assert)

一直很疑惑断言的使用机制,不清楚为什么在debug版本当中使用断言机制,而在release版本中要去掉断言
参考网上一些说法,在这边总结一下:
先给出一个示例程序:

#define NDEBUG
#include 

void *memcpy(char *dst, const char *src,size_t n)
{
  //安全检查
    assert( (dst != NULL) && (src != NULL) );
    unsigned char *pdst = (unsigned char *)dst;
    const unsigned char *psrc = (const unsigned char *)
    //防止内存重复
    assert( !(psrc <=pdst && pdst < psrc+n));
    assert( !(pdst <=psrc && psrc < pdst+n));
    while(n--){
        *pdst++ = *psrc++;
    }
    return dst;
}
  1. 断言正是用在条件永远不可能发生的地方。

你可能感兴趣的:(断言机制(assert))