在给定的内存地址处动态初始化内存

时间:2014-01-18 15:26:54

标签: c++ memory dynamic hash hashtable

好吧这可能看起来很奇怪,但请耐心等待我,我只是一个初学者。在过去的几天里,我一直在尝试使用散列函数的所有最佳部分(如RS,JS,ELF e.t.c)来开发一个通用散列函数来维护带有散列表的关联数组,以减少散列冲突。但现在问题是,为了避免相当大的冲突,我必须使用至少6位数的无符号长值来避免碰撞。

让我们假设我只需要将学生的名字映射到他们的标记。所以我为标记维护一个整数数组。

现在回到我的问题。

  

我想到的想法是将这些值用作实际存储器地址的少数低位,然后动态初始化大到足以存储所获得标记的整数的存储器。对于每个新添加的值,都会重复此过程。

现在假设我以某种方式设法避免了操作系统保留的所有内存位置

  

是否有任何可行的方法在我们喜欢的地址动态初始化内存,而不是让新运算符初始化它,然后在C ++中返回指向该地址位置的指针。 (我正在使用gcc)。

1 个答案:

答案 0 :(得分:0)

它取决于平台。在Unix系统上,您可以尝试使用mmap()。 Windows等价物是VirtualAlloc()。但由于地址可能已经在使用,因此无法保证。