首页 > 解决方案 > sbrk 的返回值上下文中的“(void*)-1”是什么?

问题描述

Linux 手册页指出sbrk(),失败时,它会返回(void*) -1. 它是什么(void*) -1,它有什么意义,或者它只是一个实际上永远不可能是 a 的数字,void*它被强制转换为 avoid*只是为了满足返回 a 的函数签名void*?我问这个是因为我以前从未见过指向负地址的指针。我不知道这可以在任何平台上取消引用。

标签: clinux

解决方案


正如您所猜测的,这只是一种返回魔法值的方法-1。它被强制转换为一个指针,只是为了匹配函数签名。调用者将知道如何解释这个神奇的值,而不是试图取消引用它。

在内部,这实际上会变成0xFFFFFFFFFFFFFFFF(或0xFFFFFFFF32 位)。可能存在可以实际访问此地址的平台,但这不是这里的目的。


推荐阅读