系统有16GB RAM。我们用于存储在哈希表的链表中的节点结构的大小为38字节。这告诉我们可以在哈希表中存储多达4.52亿个节点。但只有在1300万个节点(大约)之后才会发生内存溢出。
相关的代码段是:
for (i=0;i<NO_OF_BUCKETS;i++)
{
nextptr = hashtable[i];
while (nextptr != NULL)
{
prevptr = nextptr;
nextptr = nextptr->next;
free(prevptr);
}
hashtable[i] = NULL;
}
答案 0 :(得分:1)
System has 16GB RAM. Our node structure for storing in the linked list of the hash table has a size of 38bytes. This tells that we can store up to 452million nodes in the hash table.
现在这是一个错误的假设。您是否认为所有RAM都将保留用于您应用程序中的数据?一点也不。有操作系统,其他用户空间应用程序等也需要内存,你甚至无法确切地知道他们需要多少。因此,不要指望您可以计算链表实现中的元素数量。