【发布时间】:2011-07-19 08:06:51
【问题描述】:
它似乎对 sbrk 的功能没有影响,但是在 sbrk() 的文档中它说它需要一个 intptr_t 参数。
当将 int 类型作为参数传递时,它可以工作(或至少看起来可以工作)。
这是在常规 C 中。
【问题讨论】:
它似乎对 sbrk 的功能没有影响,但是在 sbrk() 的文档中它说它需要一个 intptr_t 参数。
当将 int 类型作为参数传递时,它可以工作(或至少看起来可以工作)。
这是在常规 C 中。
【问题讨论】:
intptr_t 根据架构改变大小。 int 可能会也可能不会根据架构改变大小 - 也就是说,如果您使用 64 位,那么 intptr_t 必须是 64 位,而 int 可能是 32 位。
【讨论】:
intptr_t 是整数类型,是可以包含指针所有位的最小类型。
只要包含正确的标题,您就不会将int 传递给sbrk()。您传递的值将根据 C 提升规则转换为 intptr_t。这些规则非常微妙,因此您至少应该知道它们存在并避免在极端情况下调用它们。
因此,当您传递sbrk 时,即使intptr_t 与您平台上的int 不同,也不要期望发生诸如崩溃之类的惊人事件,只要包含提供sbrk() 原型的标头即可。
【讨论】:
intptr_t 也是整数类型,只是并不总是与 int 相同。