redis_3.0.7_sds.c_sdsIncrLen()

源程序

void sdsIncrLen(sds s,int incr)
{
    struct sdshdr *sh = (void*)(s-(sizeof(struct sdshdr)));

    if(incr >= 0)
        assert(sh->free >=(unsigned int)incr);
    else
        assert(sh->len >= (unsigned int)(-incr));
    sh->len += incr;
    sh->free -= incr;
    s[sh->len] = '\0';
}

這個函數用來計算調整sds字符串中len和free的大小。每次對sds字符串通過操做以後,字符串的len和free的大小都會變更。express

函數:函數

void assert( int expression );

先計算表達式expression,若是expression爲真,則assert()無任何做用;若是expression爲假,則函數先向標準錯誤流stderr打印一條出錯信息,而後經過abort來終止程序運行。
本質上,assert是一個宏,並非函數。code

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息