我正在处理不是由我编写的代码。我有这句话:
// p is type of std::unique_ptr<uint8_t[]>
if (p < 0) { /* throw an exception */ }
那么p < 0
在这种情况下意味着什么呢?
在文档页面,我相信我的情况是16) y < nullptr
,这里0
是nullptr
。
但是它是做什么的呢?
1
基于以下事实:在x64中,内核范围内的规范指针已设置了高位,这可能是一种(愚蠢的硬编码)检查指针是否属于内核空间的方法-如果以下答案正确,则否。
—
Michael Chourdakis
在WINAPI中
—
ALX23z
p==-1
是无效的句柄。由于这2^64
是一个荒谬的数字,任何明智的p
做法总是积极的。因此,p<0
检查WINAPI的无效句柄。这不是一个好代码。
@OP:您能否澄清一下此代码在哪个上下文中使用?是在Linux还是Windows上使用?指针的值是否与某些WINAPI代码相关?我认为,如果您对此进行了澄清,以上评论可能是一个很好的答案。
—
胡桃
@ ALX23z但是WINAPI句柄应该是类型
—
胡桃
uint8_t*
(还是的数组uint8_t
)?我认为是void*
,不是吗?
@walnut他们不是
—
ALX23z
void*
宏HANDLE_PTR或基本上是long*
iirc的东西。