在section 6.6 hash table的範例中,其中lookup function內
struct nlist *np;
(中略)
if((np=lookup(name)) == NULL)
np=(struct nlist *)malloc(sizeof(*np));
^^^
為啥不是 sizeof(struct nlist)
還有sizeof(*np)跟sizeof(np)會是怎樣呢?後者代表配一個pointer所需的memory嗎?
此外,下方若干行的
hashval=hash(name);
np->next=hashtab[hashval];
^^^^^^^^^^^^^^^^^^^^^^^^^^
這行完全不懂幹嘛!
hashtab[hashval]=np;
^^^^^^^^^^^^^^^^^^^
這行怪怪,因為新install的nlist不一定是直接串在hashtab[]上,有可能串在某個nlist
的->next上吧?
(亦或是我眼花看錯?)
請有書的給予指導,謝謝!^ ^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.196.171