【问题标题】:HXmap_get not returning the right data with the keyHXmap_get 没有用密钥返回正确的数据
【发布时间】:2011-02-13 05:38:44
【问题描述】:
int main()
{
       struct HXmap *limitMap;
        limitMap = HXmap_init(HXMAPT_DEFAULT,HXMAP_CKEY);
        int a[]={1,2,3};
        HXmap_add(limitMap,a,limitMap);
        HXmap_add(limitMap,(a+1),BuyTree);
        HXmap_add(limitMap,&a[2],main);
          int price =1;
          Limit* add = (Limit*)HXmap_get(limitMap,&price);
   printf("Price: %d, Address %p LimitMap %p \n",price,add,limitMap);
        return 0;
}

这段代码的输出在这里:

Price: 1, Address (nil) LimitMap 0x8ff5008

为什么 HXmap_get() 没有返回正确的地址?

不胜感激。

【问题讨论】:

    标签: c linux dictionary data-structures


    【解决方案1】:

    我没有安装libHX,所以这只是根据文档猜测......

    因为您没有指定键是 C 字符串,也没有提供键大小,也没有提供自定义 HXmap_ops,所以它使用直接值比较而不是跟随指向 int 的指针。

    您可以直接使用price 作为密钥(不使用指向int 的指针),也可以指定密钥大小。

    HXmap_init5(HXMAPT_DEFAULT, HXMAP_CKEY, NULL, sizeof(int), 0);
    

    【讨论】:

    • 现在我在诅咒自己。该死!我浏览了 4 次文档以检查 HXmap_init() 函数的有效性,但不使用它并没有让我感到奇怪。谢谢它有效。
    猜你喜欢
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 2015-07-17
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    相关资源
    最近更新 更多