Почему NULL / 0 является недопустимым местом в памяти для объекта? - PullRequest
14 голосов
/ 02 июня 2010

Я понимаю назначение константы NULL в C / C ++ и понимаю, что она должна быть представлена ​​ некоторым способом внутри.

Мой вопрос таков: есть ли фундаментальная причина, по которой 0-адрес был бы недопустимым местом в памяти для объекта в C / C ++? Или мы в теории"теряем" один байт памяти из-за этого резервирования?

Ответы [ 12 ]

1 голос
/ 02 июня 2010

Но поскольку современные операционные системы могут отображать физическую память на адреса логической памяти (или лучше: современные процессоры, начиная с 386), ни один байт не теряется.

0 голосов
/ 02 июня 2010

Память по этому адресу зарезервирована для использования операционной системой. 0 - 64k зарезервировано. 0 используется в качестве специального значения для указания разработчикам «недопустимый адрес».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...