前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis_3.0.7_sds.c_sdsempty_so_on

redis_3.0.7_sds.c_sdsempty_so_on

作者头像
青木
发布2018-05-28 15:34:22
4130
发布2018-05-28 15:34:22
举报

代码语言:javascript
复制
/*
* 创建一个长度为0的空sds字符串。            
* 即使是空字符串,字符串仍然是以'\0'结尾的。
*/
sds sdsempty(void)
{
return sdsnewlen("",0);    
}

/*
*从空字符串创建一个新的sds字符串
*/
sds sdsnew(const char *init)
{
size_t initlen = (init == NULL)?0:strlen(init);
代码语言:javascript
复制
>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));//这是自己改称函数库里的函数 }
代码语言:javascript
复制

原型

代码语言:javascript
复制
void free(void *ptr)
//  释放ptr指向的存储空间。

free可以释放calloc, malloc, realloc动态分配的空间,当你调用malloc、alloc分配内存时,不仅仅是从堆里面分配得到了可用内存,实际上内存管理子系统还维护了内存列表。 被释放的空间通常被送入可用存储区池。free()函数只是将参数指针指向的内存归还给操作系统,并不会把参数指针置NULL。 内存这种底层资源都是由操作系统来管理的,而不是编译器,编译器只是向操作系统提出申请。 free函数并没有能力去释放真正的内存,只是通知操作系统它归还了内存,然后操作系统就会修改内存分配表,对被free掉的内存重新进行管理,以方便下次分配。

头文件:

代码语言:javascript
复制
#include<stdlib.h>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原型
  • 头文件:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档