c - sbrk 的返回值上下文中的“(void*)-1”是什么?
问题描述
Linux 手册页指出sbrk()
,失败时,它会返回(void*) -1
. 它是什么(void*) -1
,它有什么意义,或者它只是一个实际上永远不可能是 a 的数字,void*
它被强制转换为 avoid*
只是为了满足返回 a 的函数签名void*
?我问这个是因为我以前从未见过指向负地址的指针。我不知道这可以在任何平台上取消引用。
解决方案
正如您所猜测的,这只是一种返回魔法值的方法-1
。它被强制转换为一个指针,只是为了匹配函数签名。调用者将知道如何解释这个神奇的值,而不是试图取消引用它。
在内部,这实际上会变成0xFFFFFFFFFFFFFFFF
(或0xFFFFFFFF
32 位)。可能存在可以实际访问此地址的平台,但这不是这里的目的。
推荐阅读
- python - 自定义电子邮件身份验证后端在 django 2.1.4 中不起作用
- javascript - styled-components - 测试 createGlobalStyle
- javafx - 从 javafx 中的不同视图获取信息
- c++ - 构建选项已更改,重新构建所有退出状态 1 [错误] 退出代码 = 1 MXChip Azure IoT 开发工具包
- javascript - 克隆 jquery 按钮两次并让他们两个都在做同样的任务
- java - Spring Boot意外重复bean
- java - 将图库中的图片保存在我的文件夹外部 SD 中?
- c# - 静态/全局变量的内存隔离(多次实例化)
- hyperledger-fabric - 如何从 fabric-client 获取用户名,名称在 registerUser.js 中设置?
- c# - 在附加到新的父 Visual 之前,必须断开指定子与当前父 Visual 的连接