Есть еще один случай, который не был рассмотрен здесь: написание библиотечной функции, где вы не можете контролировать передаваемые параметры и хотите, чтобы ваша функция возвращала ошибку типа «неверный указатель», а не сбой если используется указатель на неверный адрес.
Если это так, то я думаю, что есть специфичные для ОС функции, которые могут дать вам действительный диапазон адресов текущего процесса. Вам также нужно будет рассмотреть вопрос о том, является ли выравнивание адреса допустимым для передаваемого типа данных. Например, если 4-байтовое целочисленное значение может по закону находиться по нечетному адресу, где адрес% 4! = 0.
Обратите внимание, что даже если вы примете эти меры предосторожности, все равно нет гарантии, что вызывающая сторона не передаст законный указатель на недопустимые данные. Суть в том, что вы не можете исправить ошибку в вызывающем коде.