Mam do czynienia z kodem, który nie został napisany przeze mnie. Mam to oświadczenie:
// p is type of std::unique_ptr<uint8_t[]>
if (p < 0) { /* throw an exception */ }
Co więc p < 0
oznacza w tym kontekście?
Na stronie z dokumentacją uważam, że mój przypadek dotyczy tego 16) y < nullptr
, gdzie 0
jest nullptr
.
Ale co to robi?
p==-1
jest niepoprawny uchwyt. Ponieważ 2^64
jest to absurdalnie duża liczba, każdy rozsądny p
jest zawsze pozytywny. p<0
Sprawdza więc nieprawidłowy uchwyt WINAPI. To nie jest dobry kod.
uint8_t*
(a nawet tablicy uint8_t
)? Myślę, że są void*
, prawda?
void*
mają makra HANDLE_PTR lub coś, co jest w zasadzie long*
iirc.