【发布时间】:2019-04-10 02:49:25
【问题描述】:
我是否需要在索引数组时始终使用size_t,即使数组的大小不足以超过 int 的大小?
这不是我应该何时使用size_t 的问题。我只想知道,例如,一个程序是否有 2GB 的可用内存(所有这些字段都可以用 int32 索引)但是这个内存是(虚拟内存)分配给计算机的 14GB - 16GB 的“字段”内存。
在这种情况下,如果我使用int32 而不是size_t(或unsigned long int),索引内存时是否总是会失败?
也许问题更多是关于虚拟内存而不是指针。
【问题讨论】:
-
索引数组与主机的 RAM 无关。鼓励
size_t的原因是因为它使您的程序具有可移植性。 -
通常程序不需要关心它运行的机器上安装了多少内存。但如果程序逻辑规定元素数量有一个下限,那么您可以使用较小的索引类型。
-
size_t保证能够索引您扔给它的任何内容的每个字节。有时很方便。 -
您可以使用任何大到足以容纳数组索引的整数类型。
char适用于小型阵列。它与可寻址内存或虚拟内存的总量无关。size_t能够保存任何数组的任何索引,因此如果您不知道预先的大小,它会很有用。 -
@user4581301:C 标准不提供这样的保证。
标签: c++ c pointers virtual-memory size-t