我正在处理不是由我编写的代码。我有这句话:
// 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的东西。