(void*)-1 je typecast -1tky (implicitne integer constant)
-1 (integer) v dec je sizeof(int) * 8 jednotiek (bavime sa o complementarnom kode)
sizeof(int) * 8 (vacsinou 32) jednotiek v binary je v hex 0xFFFFFFFF
(void *) je typecast na adresu, takze volanie porovnavas s adresou 0xFFFFFFFF co je posledna adresa tvojej ramky (uvazujem 32bit architekturu s 4GB ram, toto moze byt inac nepresne)
shmget() ti vrati nejaku adresu v tvojej ramke, ktora je spravidla aligned na k * 2^n (k z ramsize() / 2^n) a (n z <1, 4>) tu adresu,
teda nikdy ti nevrati 0xFFFFFFFF validne, iba ak by volanie zlyhalo.
Je to hroza a strach, ruky od toho prec.