gpt4 book ai didi

c - size_t 是便携的吗?

转载 作者:太空狗 更新时间:2023-10-29 15:49:41 25 4
gpt4 key购买 nike

海湾合作委员会 4.4.1,C99

我正在使用 size_tsize_t 是一个 unsigned int。但是,这取决于您运行的是 32 位还是 64 位。

我将使用 size_t 来存储缓冲区的大小。

因此,如果跨架构使用,我认为这不会非常便携。

只是一个问题,在 32 位或 64 位上使用 size_t。哪些情况会导致最严重的问题?

最佳答案

正如其他人所说,size_t 是正确的,并且完全可以接受用于存储 sizeof() 的结果或任何可表示对象的字节大小。您需要注意以下几点:

  1. size_t一些无符号整数类型 的大小相同。它不一定与最大无符号整数类型、unsigned intunsigned long等字节数相同。
  2. sizeof(size_t) 是实现定义的字节数,因此 memcpy 对其进行处理或分配给 uintmax_t 以外的任何整数类型是个坏主意。我什至不确定假设它的大小等于或小于 uintmax_t 是否安全。
  3. 将一个 size_t 值写入二进制文件,然后由另一个进程、不同机器上或由使用不同编译器选项编译的东西将其读回 size_t 可以对您的健康有害。
  4. 通过网络发送一个 size_t 值并尝试在另一端使用 sizeof(size_t) 缓冲区接收它是相当不安全的。

所有这些都是除 unsigned char 之外的任何其他整数类型的标准问题。所以 size_t 与任何其他整数类型一样可移植。

关于c - size_t 是便携的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1697048/

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