函数luaS_resize在lua 5.2.3源代码中lstring.c文件中。

当表大小增加时,它会重新哈希。但是当表大小缩小时,它只是重新调整大小为一半,而不需重新哈希。我不理解它是如何运作的?

点赞
用户4995317
用户4995317

好的。我来回答这个问题。这段代码能够正常工作,因为将哈希表重新散列的操作,并没有放在第一个if(newsize > tb->size)中。它适用于(newsize > tb->size)(newsize < tb->size)两种情况。下次我会更细心地阅读代码。

2015-06-10 14:36:08