Eric Blake wrote: > I haven't pushed the second one to savannah yet; what do you think of it? > Sometimes it is desirable to hash distinct pointers, in which case > allowing a NULL user function to request this seems to make sense. My > design choice was to provide trivial functions at initialization rather > than penalize normal users by checking at every use of the callback > whether the function was NULL.
Yes, I've often hashed pointer values. However, note that the low bits of a pointer are often zero, so that for small table sizes, this may be a very poor choice. In applications that hash only malloc'd pointers I've used this: size_t hash_address (const void *addr, size_t table_size) { size_t k = (size_t) addr; assert (k % 4 == 0); return (k / 4) % table_size; }