Зачем освобождать указатель, скажем, p, который назначается тому, на что указывает другой указатель q, а также освобождать q?
//for example,
int *p = malloc(sizeof(int));
*p = 10;
int *q = malloc(sizeof(int));
q = p;
free(p);
//This frees q as well.
Указатели q и p имеют разные адреса, но указывают только на одно и то же местоположение(т.е. сказать, что они хранят один и тот же адрес, который имеет 10. Исправьте меня, если я ошибаюсь там).
Противоречие наиболее определенно возникает в том, как я думаю об указателях или в способе free ()работает, потому что из всего, что я знаю (что не так уж и много), поскольку q и p имеют разные адреса, освобождение p не должно влиять на q вообще, если я не ошибаюсь в понимании указателей или если free () / memory работает всвоеобразным образом.
Я хотел бы знать, почему это так. (Мне известно о публикации Освободить назначенный указатель , но он не объясняет, почему и как именно это происходит)