Agu*_*cía 13 c c++ pointers size-t virtual-memory
size_t即使数组的大小不足以超过int的大小,我在索引数组时也需要始终使用它吗?
这不是我何时应该使用的问题size_t。我只想知道,例如,一个程序是否具有2GB的可用内存(所有这些字段都可以由int32索引),但是此内存(虚拟内存)已分配给“字段” 14GB-计算机的16GB内存。
在这种情况下,如果我使用int32而不是size_t(或unsigned long int)来索引内存,它将总是失败吗?
也许问题更多是关于虚拟内存,而不是指针。
size_t是一个无符号整数,能够容纳您可以分配的最大对象的大小。它对索引很有用,因为这意味着它可以索引到可以分配的最大数组中。
这并不意味着索引是必需的甚至是推荐的索引。您可以使用任何足够大的整数类型来为数组建立索引。int_fast32_t可能更快,uint_least16_t结构可能更小等等。了解您的数据,您可以做出一个不错的选择。
虚拟内存不在C或C ++的范围内。从他们的角度来看,您只需索引到内存中,这取决于您的平台才能使其正常工作。实际上,您的应用仅使用虚拟地址;您的CPU / OS正在将虚拟地址转换为幕后的物理地址。您无需担心。