Обычный способ сделать это в системах POSIX - использовать системный вызов write()
. Он вернет EFAULT
в errno
, а не вызовет сигнал, если память не может быть прочитана:
int nullfd = open("/dev/random", O_WRONLY);
if (write(nullfd, pointer, size) < 0)
{
/* Not OK */
}
close(nullfd);
(/dev/random
- это хорошее устройство для использования в Linux, поскольку оно может быть записано любым пользователем и фактически попытается прочитать предоставленную память. В ОС без /dev/random
или там, где оно не доступно для записи, попробуйте /dev/null
). Другой альтернативой может быть анонимный канал, но если вы хотите протестировать большой регион, вам нужно регулярно очищать конец чтения канала.