Рассмотрим код 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 очень сложным (надеюсь, это не только я). Кто-нибудь может пролить свет на то, что происходит?