c 调用java map_HashMap: 使用C语言编写的hashmap&list,参考了javaJDK的写法,实现了常见功能,同时支持value的内存分配机制。代码使用cppcheck,valgr...

#HashMap&List

###1.本库使用了C语言实现了一个基本的hashmap,同时实现了一个list

参考java的hashmap实现机制,实现了C基本的

hashmap实现,支持几种功能:

1.新建

2.销毁

3.加入/设置

4.获取

5.删除

6.判断是否存在

7.打印

list实现,支持几种功能:

1.新建

2.销毁

3:.加入

4.获取

5.打印

###2.哈希算法

哈希算法使用了JAVA的JDK中默认的simple BKDR hash algorithm

有需要的也可以替换成暴雪的One-Way-Hash或者PHP中的time33之类的

###3.编译方法

XipHashMap.c和XipList.c可以执行make -f makefile.osc编译成libkmaplib.so

HashMap_test.c和List_test.c 可以使用mk来编译成可执行程序

我是在cygwin环境下编写的,linux下要改一下makefile中的cc -shared命令, unix类似,可以生成动态库

当然也可以直接把代码copy

###4.注意事项

1).使用的时候,调用程序请注意包含头文件hashmap.h来声明调用函数原型 ,否则可能会导致

###5.更新说明

2016.08.01更新:

1)增加了list

2)扩展了printf,支持回调函数自己定义打印格式。

3)增加了hashmap和list的malloc_flag字段,可以控制是否在map或list中额外分配内存保存value

4)在linux下测试,使用valgrind进行了内存泄漏测试,并修正了所有内存泄漏问题。

2016.08.04更新:

1)为hashmap增加了XipHashMapNum和XipHashMapSize外部函数,可以检查当前元素个数,以及当前hashmap占用空间大小

2)修改list,增加element节点,增加每个value的size保存。同时新增XipListSize外部函数,检查当前list占用空间大小

3)修正了某些异常情况下,hashmap可能导致的内存泄漏问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值