gpt4 book ai didi

指针大小可以是 4.75 字节吗

转载 作者:行者123 更新时间:2023-11-30 21:15:11 25 4
gpt4 key购买 nike

考虑一个可用总内存为 2^(38) 字节的系统。用户在此系统上编写使用整个寻址空间的 C 程序。此 C 程序中定义的指针的大小(以字节为单位)是多少。

最佳答案

在 C 语言中,字节是一个基本单位。一个字节中的位数由每个单独的 C 实现定义。 (八位现在很常见,但不是强制性的。这是最小值。)

Per C 2018 6.2.6.1 2,除了位域之外,每个对象都由一个或多个字节组成。因此,在其 C 实现中,指针必须是整数字节,尽管指针中的某些位可能未使用。

指针使用的字节数最终由 C 实现决定,而不是由运行其程序的计算机或系统决定。总的来说,C 旨在配置为“自然地”适应系统,因此指针和其他类型往往与机器的设计目的相匹配。然而,C 实现有时有特殊目的,例如支持旧的源代码或仅使内存的子集可用以节省资源。例如,在具有 64 位地址空间的机器上,我们可以选择使用 32 位 C 实现,因为 64 位指针消耗的空间量对于执行某些程序来说是一个巨大的成本。

因此,在具有 238 字节内存的系统上,需要 38 位来寻址每个字节。这导致了几种可能性,包括:

  • 系统有八位字节,C 实现使用五字节(40 位)指针,其中 38 位表示地址,其他两位可能会被浪费或可用于某些错误检测或其他特点。
  • 系统有八位字节,对齐有一些好处,因此 C 实现使用八字节指针。
  • 假设系统有 19 位字节,C 实现使用其中两个作为指针。
  • 系统有八位字节,C 实现使用四字节指针。每个 C 程序的地址空间中只有 232 字节可用,尽管不同的 C 程序可能使用内存中 238 字节的不同部分。

关于指针大小可以是 4.75 字节吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57595648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com