断言机制(assert)

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

#define NDEBUG
#include <assert.h>

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. 断言正是用在条件永远不可能发生的地方。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • iOS面试小贴士 ———————————————回答好下面的足够了------------------------...
    不言不爱阅读 6,169评论 0 7
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 6,081评论 0 12
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 5,678评论 0 4
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 7,081评论 0 35
  • 史上最全的iOS面试题及答案 迷途的羔羊--专为路痴量身打造的品牌。史上最精准的定位。想迷路都难!闪电更新中......
    南虞阅读 5,414评论 0 8