【发布时间】:2011-02-04 07:08:01
【问题描述】:
由于size_t 可以是 32 位或 64 位,具体取决于当前系统,因此最好始终将 size_t 作为引用或 const 引用传递给函数,使其始终为 4 个字节? (如果它是 8 个字节,则必须复制)我看过的许多开源代码都不会这样做,但是如果他们的编译器支持 64 位整数,那么这些 64 位整数总是作为引用传递。他们为什么不为 size_t 这样做?我想知道你的意见是什么。
【问题讨论】:
-
为什么你认为 const 引用在 64 位系统上是 4 个字节?拥有 4 字节引用和 64 位 size_t 有什么意义?
-
哦,哇,我不敢相信我忘记了。现在我想删除我的问题
-
size_t将在哪些系统上为 64 位而指针为 32 位? -
@templatetypedef,我还以为是
ptrdiff_t?size_t原则上可以在 64 位系统上为 32 位,但所有内存分配必须单独小于 4G。然而,这实际上并没有完成,因为你的寄存器无论如何都是 64 位的,所以它并没有真正为你买任何东西。 -
@bdonlan- 我的立场是正确的!我将 STL 容器内的嵌套类型 size_type 与 size_t 和 ptrdiff_t 混淆了,它必须足够大以容纳任何差异类型的绝对值。感谢您引起我的注意! @Mikel,我撤回我之前的声明,理由是它不正确。