斷言機制(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面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛閱讀 2,003評論 0 7
  • 多線程、特別是NSOperation 和 GCD 的內部原理。運行時機制的原理和運用場景。SDWebImage的原...
    LZM輪回閱讀 2,027評論 0 12
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛DE問候閱讀 1,753評論 0 4
  • 史上最全的iOS面試題及答案 iOS面試小貼士———————————————回答好下面的足夠了----------...
    Style_偉閱讀 2,417評論 0 35
  • 史上最全的iOS面試題及答案 迷途的羔羊--專為路癡量身打造的品牌。史上最精準的定位。想迷路都難!閃電更新中......
    南虞閱讀 1,538評論 0 8