mmap /dev/zeroできない
ちょっとはまった
Linuxだと/dev/zeroから適当にmmapしてメモリ確保するけどmac os xでそれやるとこける。
かわりに-1をmmapするとよい。
#ifdef __linux__ int fd = ::open("/dev/zero", O_RDONLY); return mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); #elsif __APPLE__ return mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANON, -1, 0); #endif
ちなみにfd -1をMAP_PRIVATEは失敗するので、MAP_SHARED | MAP_ANONじゃないとだめぽい。