aliyun / iotkit-embedded

高速镜像: https://code.aliyun.com/linkkit/c-sdk
Apache License 2.0
496 stars 252 forks source link

关于HAL_KV_linux.c里面的hash 大小 #158

Closed bzd2132 closed 2 years ago

bzd2132 commented 4 years ago

目前在SDK里面定义的大小为

#define TABLE_COL_SIZE    (384)
#define TABLE_ROW_SIZE    (2)

我们在调试的过程中发现在调用hash_table_put的时候会触发 full的情况。

    while (p && p->value_len) { /* if key is already stroed, update its value */

        if (strcmp(p->key, key) == 0) {
            memset(p->value, 0, ITEM_MAX_VAL_LEN);
            memcpy(p->value, value, value_len);
            p->value_len = value_len;
            break;
        }

        if (++j == TABLE_ROW_SIZE) {
            kv_err("hash row full");
            free(kv);
            return -1;
        }
        p = &kv[j];
    }

出现这种情况会有什么影响,自己更新这个定义的大小有没有问题。