在C中传递sbrk()和intptr_t与int之间有什么区别?

时间:2011-03-20 23:13:11

标签: c sbrk

它似乎对sbrk的功能没有影响,但是在sbrk()的文档中它说它需要一个intptr_t参数。

将int类型作为参数传递时,它可以工作(或者至少可以工作)。

这是常规的C.

2 个答案:

答案 0 :(得分:6)

intptr_t会根据体系结构更改大小。 int可能会也可能不会根据体系结构更改大小 - 也就是说,如果您使用64位,那么intptr_t必须是64位,而int 可能 32位。

答案 1 :(得分:1)

只要包含正确的标头,您就不会将int传递给sbrk()。您传递的值将根据C促销规则转换为intptr_t。这些规则非常微妙,因此您至少应该知道它们存在并避免在极端情况下调用它们。

因此,即使sbrkint不同,当您将intptr_t看起来像int的内容传递给sbrk()时,也不要指望会出现诸如崩溃之类的壮观事件。 1}}在您的平台上,只要包含提供{{1}}原型的标题