В C можно вставить значение -1 (например, 0xFFFFFFFF) в указатель, используя такой подход, как this one, и ожидать, что такой адрес памяти никогда не выделяется во время выполнения?
Идея состоит в том, чтобы значение указателя использовалось как адрес памяти, за исключением случаев, когда он имеет это «специальное» значение -1. Указатель следует рассматривать как адрес памяти, даже если он равен NULL (в этом случае объект, на который он указывает, еще не построен).
Я понимаю, что это может зависеть от платформы, но предполагается, что данная программа будет работать в Linux, Windows и MacOSX.
Проблема гораздо больше, чем описано здесь, поэтому комментарии или ответы, которые ставят под сомнение этот подход, бесполезны. Я знаю, что это немного взломано, но альтернатива - серьезный рефакторинг: /
Заранее спасибо.
malloc
, ниmmap
никогда не вернут этот адрес. - person rslemos   schedule 08.07.20140xfffffff != NULL
. - person CodeClown42   schedule 08.07.2014main
) в качестве дозорного. - person rslemos   schedule 08.07.2014-1
никогда не будет выделен во время выполнения. - person Stephen Canon   schedule 08.07.2014&sentinel
является «постоянным выражением» (в смысле C99 6.6) и может использоваться в инициализаторе. Зачем нужен какой-либо код? - person Pascal Cuoq   schedule 08.07.2014