Освобождение указателей из других функций в C

Рассмотрим код c:

void mycode() {
  MyType* p = malloc(sizeof(MyType));
  /* set the values for p and do some stuff with it */
  cleanup(p);
}


void cleanup(MyType* pointer) {
  free(pointer);
  pointer = NULL;
}

Я ошибаюсь, думая, что после вызова cleanup (p); содержимое p теперь должно быть NULL? Будет ли очистка (указатель MyType *) должным образом освободить выделенную память?

Я кодирую свое задание в колледже и обнаруживаю, что отладчик по-прежнему показывает указатель на адрес памяти вместо 0x0 (или NULL) как я и ожидал.

Я нахожу управление памятью в C очень сложным (надеюсь, это не только я). Кто-нибудь может пролить свет на то, что происходит?

10
задан Ash 19 May 2011 в 05:38
поделиться