c ++在32/64位系统上使用16位指针

时间:2011-11-29 13:48:41

标签: c++ pointers 16-bit

通常指针的大小等于"宽度" CPU,因此指针通常可以访问每个系统地址。

在64位系统上使用16位指针应该允许在与单个64位指针相同的内存区域中容纳4个16位指针,但是16位指针只允许寻址2 ^ 16个位置。

我的想法不是关于节省记忆,而是关于潜在的性能优势。这个想法基本上是以65635的块为单位分配内存,并使用16位指针来解决那些"虚拟" 16位地址空间。

这可能吗?我应该尝试这样做,即它会提供性能优势吗?

2 个答案:

答案 0 :(得分:5)

更有可能是性能受到打击。现代CPU可以轻松访问32位和64位数据宽度。如果您有16位数据,则​​需要屏蔽等,以计算CPU中的实际地址。

进一步阅读的指针是未对齐的访问权。

答案 1 :(得分:2)

如果你有一个32/64位系统,它有足够的RAM,你的方案的优化优势将被实现它的复杂性所抵消。您需要确保它正常工作,并且您的方案比直接指针访问操作慢得多。