sds sdsnewlen(const void *init, size_t initlen) {
struct sdshdr *sh;
sh = zmalloc(sizeof(struct sdshdr)+initlen+1);
#ifdef SDS_ABORT_ON_OOM
if (sh == NULL) sdsOomAbort();
#else
if (sh == NULL) return NULL;
#endif
sh->len = (int)initlen; //先设置属性
sh->free = 0; //
if (initlen) {
if (init) memcpy(sh->buf, init, initlen); //再进行拷贝
else memset(sh->buf,0,initlen); //
}
sh->buf[initlen] = '\0';
return (char*)sh->buf;
}
struct sdshdr *sh = (void*)(s-(sizeof(struct sdshdr))); //灵活的运用指针,太牛逼了!!!!
return sh->len;
}