-2

系统有 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;
  }
4

1 回答 1

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 都会保留给应用程序中的数据吗?一点也不。有操作系统、其他用户态应用程序等也需要内存,你甚至无法准确说出它们需要多少内存。所以不要指望你可以计算出你的链表实现中的元素数量。

于 2012-05-02T15:15:10.773 回答