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>
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息