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掉的内存重新进行管理,以方便下次分配。

头文件:

#include<stdlib.h>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux运维学习

linux学习第六十五篇:for循环,while循环, break跳出循环,continue结束本次循环

for循环 语法:for 变量名 in 条件; do …; done for循环会以空格作为分隔符 案例1 #!/bin/bash sum=0 for i ...

28510
来自专栏JavaEdge

HotSPot虚拟机对象探秘1 对象的创建过程2 对象的内存布局3 访问对象的过程

38116
来自专栏自学笔记

python基本常识

tuple,str都可以看做是一种list,都可以进行切片操作。 利用切片操作,去掉一个字符串的前后空格。要注意是是前后空格是不止一个的,可能有很多个。

2905
来自专栏技术点滴

编译器构造

编译器构造 一、 编译器简介 前面谈到静态链接器构造的基本流程,最后提到所构造的链接器若要能正常工作的前提是需要构造一个能生成符合链接器输入文件格式的编译器,本...

2378
来自专栏Java 源码分析

Java多线程JUC

1. volatile 关键字 多线程访问的时候,一个比较严重的问题就是内存不可见,其实在内存访问的时候每一个线程都有一个自己的缓冲区,每次在做修改的时候都是从...

2953
来自专栏架构师小秘圈

shell极简教程(二)

一,题记 不懂shell的程序员不是好程序员,学习shell是为了自动化,使用自动化可以非常有效的提高工作效率。没有一个大公司不要求linux的基本技能的,只是...

3917
来自专栏自动化测试实战

RF接口测试(1)

1.1K4
来自专栏编程心路

想学习php的,不如来这里看看

win+R打开命令行,cmd进DOS窗口 DOS命令开启关闭Apache和Mysql Apache启动关闭命令

1183
来自专栏专注 Java 基础分享

深入理解Struts2----类型转换

     之前的一系列文章主要介绍了有关Struts2的一些基本用法和部分的简单原理,但是始终没有介绍有关拦截器的相关内容,从本篇开始我们将从另一个角度去深入理...

2239
来自专栏Coding迪斯尼

eactjs开发自制编程语言Monkey的编译器:高能技术干货之语法高亮2

1415

扫码关注云+社区

领取腾讯云代金券