记一hiredis redisCommand坑
来源:互联网 发布:南方大数据110指数基金 编辑:程序博客网 时间:2024/05/01 08:43
实际上应该说是redisvFormatCommand的坑,源代码如下:
case 'b': arg = va_arg(ap,char*); size = va_arg(ap,size_t); if (size > 0) newarg = sdscatlen(curarg,arg,size); break;
就是%b的时候的格式化命令,调用如下(修正后的):
reply = (redisReply*)redisCommand(redis_context, "SET %b%b%b %b", g_preffix, (size_t)preffix_len, key, (size_t)key_len, g_suffix, (size_t)suffix_len, value, (size_t)value_len);
调用代码中preffix_len,key_len,suffix_len,value_len都是int类型的数据,我的开发环境为centos 6.6 x64位(如果是32位开发机的话都不会碰到这个问题),在gcc 4.4.7上,我的size_t是64位,int是32位,这样在vFormatCommand中va_arg取出size的时候就会出错了,修正方案也比较简单,如上,在调用代码中,将所有size的变量转为size_t之后再调用。
不修正的话最可能碰到的问题就是Out of memory....
0 0
- 记一hiredis redisCommand坑
- 记一hiredis redisCommand坑
- redisCommand接口的用法--利用hiredis库获取MGET命令的结果的坑!
- redisCommand接口的用法--利用hiredis库获取MGET命令的结果的坑!
- C++通过hiredis执行redisCommand后怎么准确的取出数据
- Redis-C客户端-HiRedis-(一)
- Hiredis
- redisCommand out of memory
- 坑爹的hiredis API使用
- 坑爹的hiredis API使用
- hiredis之坑爹的异步调用
- linux下的hiredis的安装和使用(一)
- Redis存盘策略hiredis的坑如何查询key
- hiredis简介
- hiredis应用
- 安装hiredis
- Hiredis 安装
- c++中使用 hiredis/hiredis.h
- gpu合并访问和取模对速度的影响
- Java 对Oracle Clob(大字符串)格式的操作 增改查
- 【深度学习】卷积神经网络(Convolutional Neural Network)
- 微信支付常见问题
- 哈希表数组链表表示法示例
- 记一hiredis redisCommand坑
- 安卓图片加载框架的学习
- C++ 中只能在堆或栈上创建的对象
- IOS和Android的后台知识
- 简单分析Android中添加shortcut方面的源码
- Swift学习(一)-语言简介
- js 计算上一个月
- hibernate 检索策略
- Android系统服务