首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redis zslGetElementByRank(t_zset.c)返回错误地址

Redis zslGetElementByRank(t_zset.c)返回错误地址
EN

Stack Overflow用户
提问于 2017-11-12 02:20:56
回答 1查看 42关注 0票数 0

在调试Redis SkipList时,我想使用zslGetElementByRank(t_zset.c)。我将Redis的主要函数代码替换为:

代码语言:javascript
复制
int main(int argc, char **argv) {

    zskiplistNode *node;

    zskiplist *zsl = zslCreate();           //create a skiplist

    zslInsert(zsl, 65.5, sdsnew("tom"));  //insert some data
    zslInsert(zsl, 87.5, sdsnew("jack"));
    zslInsert(zsl, 70.0, sdsnew("alice"));
    zslInsert(zsl, 95.0, sdsnew("tony"));

    printf("The Rank equal 4 is :");         
    node = zslGetElementByRank(zsl, 4);       //get element by rank
    printf("%s->%f\n", node->ele, node->score); 

    return 0;
}

$ make

$ ./src/redis-server

1 29749分段错误./src/redis-server // i得到分段错误

然后,我调试代码,在zslGetElementByRank和main中打印地址,地址是:

(gdb) p x x is zslGetElementByRank returnd

$1 = (zskiplistNode *) 0x7ff6e25000

(gdb) p节点

$2 = (zskiplistNode *) 0xfffffff6e25000

为什么地址从0x7ffff6e25000改为0xfffffff6e25000,我很困惑。

很抱歉忘记了,我的Redis版本是4.0.1

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-12 11:36:35

我找到了答案,仅仅是因为我没有在server.c中声明zslGetElementByRank。

警告是:

assignment makes pointer from integer without a cast [enabled by default]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47244829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档