There is a much easier solution to your problem that is fairly portable:
mmap(ptr, length, PROT_READ|PROT_WRITE, MAP_FIXED|MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
Since MAP_FIXED
is permitted to fail for fairly arbitrary implementation-specific reasons, falling back to memset
if it returns MAP_FAILED
would be advisable.