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 < 0oznacza w tym kontekście?
Na stronie z dokumentacją uważam, że mój przypadek dotyczy tego 16) y < nullptr, gdzie 0jest nullptr.
Ale co to robi?
p==-1jest niepoprawny uchwyt. Ponieważ 2^64jest to absurdalnie duża liczba, każdy rozsądny pjest zawsze pozytywny. p<0Sprawdza 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.