开发者社区 > 云原生 > 容器服务 > 正文

宣传一下我的C语言库 内存管理 日志记录 堆栈跟踪 通用容器 单元测试 多线程 文件 流:报错

简介

cfan是开源的ANSI C实现的基础库。讲究代码整洁,性能和跨平台。 包括内存检测,内存分配池,日志记录,堆栈跟踪,字符串处理, 动态数组,哈希表,队列,单元测试,线程池,文件,流等(不断增长中)。 cfan在纯C基础上采用面向对象和模版编程技术。

使用说明

内存管理

使用fc_malloc/cf_realloc/cf_free等代替标准的内存管理函数,在Debug下可以进行内存泄露检测和内存溢出检测等。 调用void cf_Memory_dumpMem()函数将打印未释放的内存和分配时的文件行数。 另外提供了加速内存分配的内存池。

日志记录

cf_Log_log(tag, level, msg, ...) 用来统一记录日志,其中tag参数是自定义的字符串,用来过滤日志。 调用int cf_Log_addListener(cf_Log_listener listener)可以添加一个自定义的日志监听器。 cf_Log_cfDebug记录的日志在非Debug模式下将被忽略。

堆栈跟踪

程序崩溃时打印函数调用堆栈能快速定位Bug,内存泄露时打印调用堆栈能定位泄露点。 也许某些调试程序能在Debug模式下进行堆栈跟踪,但是不能方便在程序中获得,有些时候也经常会跟踪出错。 在这里我们手动跟踪了函数调用堆栈,在函数进入时调用CF_ENTRY_FUNC,返回时调用CF_EXIT_FUNC。 调用cf_FuncTrace_printStackTrace()打印调用堆栈,调用cf_FuncTrace_printPerformance()打印性能统计。

字符串

StrBuf是可以动态扩增的字符串缓冲,可以进行快速的字符串连接操作。 Str包含对标准库补充的字符串处理函数。

通用容器

Array是动态数组容器,能通过索引快速访问。其中还实现了快速排序和二分查找算法。 HashMap是哈希表,提供K-V对的快速访问。采用模版编程技术,最大限度提高效率。 Queue是固定容量的先进先出队列实现。

单元测试

Test是简单的单元测试框架。 使用前调用cf_Test_init()初始化,使用cf_Test_add(name)添加一个单元测试用例。 调用void cf_Test_run(const char *nameFilter, const int attrFilter)运行测试用例。

多线程

BlockingQueue是一个阻塞队列,当在队列满时增加会被阻塞,当在队列为空时提取会阻塞。 Executor是采用生产者消费者模式的线程池。

文件

File是跨平台的文件和文件夹操作库。 Config用来读取简单的K=V配置文件。

Object是所有对象的基类。 Stream定义了一个多态的流对象。


展开
收起
kun坤 2020-06-06 15:33:54 523 0
1 条回答
写回答
取消 提交回答
  • 好像不错的样子,下载过来学习学习。######~~有个自己的库多爽。######常写C程序,基本都有自己的库######类库?内裤! ######这个必须顶一下。######貌似淘宝也开源了他们内部用的一套库。######回复 @chunquedong : http://code.taobao.org/p/tb-common-utils/src/######叫什么名字,没搜到######没有内裤,不舒服的。。。谁用谁知道。哈。无非内裤比较难外穿,通常也无法外借。。。总会有体味残留,随便拿来穿,比较容易交叉感染。哈。######有些代码还是可以复用的。######精辟!######菜鸟码农,感觉没什么注释,看不太懂。。。######这已经是我写过比较有注释的代码了######谢谢分享######非常好!

    2020-06-08 11:22:10
    赞同 展开评论 打赏

国内唯一 Forrester 公共云容器平台领导者象限。

相关电子书

更多
阿里云文件存储 NAS 在容器场景的最佳实践 立即下载
何种数据存储才能助力容器计算 立即下载
《容器网络文件系统CNFS》 立即下载