У меня есть указатель, и по умолчанию он содержит NULL, затем он ждет некоторого события и получает значение, если событие происходит, позже я освобождаю указатель в другом месте но даже после освобождения указателя я не делаю его NULL, поэтому он по-прежнему ссылается на одно и то же место в памяти, и я знаю, что следующий вызов malloc может выделить эту память фрагмент на какой-то другой запрос памяти!
pointer_type *p = NULL;
while (process_get_wakeup(//some logic//)) {
while ((qelem = (void*)process_dequeue(//some logic//)) != NULL) {
p = (pointer_type *)qelem;
}
.
.
//goes into a loop of calls where free(p) is also done!
.
.
//Printing value of p as %p gives this : 0xFF00000000
РЕДАКТИРОВАТЬ: Я уже знаю, что это не то, как мы должны это делать, и я не могу ожидать сохранения того же значения, которое может быть использовано для чего-то другого сейчас, но я хочу знать, почему я вижу только определенное значение p!
Имеет ли это значение: 0xFF00000000 какое-либо особое значение?
malloc
. Единственным специальным значением указателя, которое может быть возвращеноmalloc
, являетсяNULL
. - person Jabberwocky   schedule 11.09.2018free(p)
значениеp
не меняется, ноp
никуда не указывает, или, другими словами, указывает на какую-то память, которая вам больше не принадлежит, и вы больше не можете разыменовыватьp
. Так работает язык C. - person Jabberwocky   schedule 11.09.2018