redis_3.0.7_sds.c_sdsempty_so_on

/*
* 建立一個長度爲0的空sds字符串。            
* 即便是空字符串,字符串仍然是以'\0'結尾的。
*/
sds sdsempty(void)
{
return sdsnewlen("",0);    
}

/*
*從空字符串建立一個新的sds字符串
*/
sds sdsnew(const char *init)
{
size_t initlen = (init == NULL)?0:strlen(init);
>return sdsnewlen(init,initlen);

}函數

/*操作系統

  • 複製一個sds字符串 */ sds sdsdup(const sds s) { return sdsnewlen(s,strlen(s)); }

/*指針

  • 釋放一個sds字符串,若是字符串爲空,不進行任何操做。 */ void sdsfree(sds s) { if(s == NULL) return; // zfree(s-sizeof(struct sdshdr));//這是源程序裏的釋放內存函數 free(s-sizeof(struct sdshdr));//這是本身改稱函數庫裏的函數 }
 

原型

void free(void *ptr)
//  釋放ptr指向的存儲空間。

free能夠釋放calloc, malloc, realloc動態分配的空間,當你調用malloc、alloc分配內存時,不單單是從堆裏面分配獲得了可用內存,實際上內存管理子系統還維護了內存列表。
被釋放的空間一般被送入可用存儲區池。free()函數只是將參數指針指向的內存歸還給操做系統,並不會把參數指針置NULL。
內存這種底層資源都是由操做系統來管理的,而不是編譯器,編譯器只是向操做系統提出申請。
free函數並無能力去釋放真正的內存,只是通知操做系統它歸還了內存,而後操做系統就會修改內存分配表,對被free掉的內存從新進行管理,以方便下次分配。code

頭文件:

#include<stdlib.h>
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息