Вы не можете освободить const char *
, потому что это const
. Сохраняйте указатели, полученные от malloc
, в неконстантных переменных-указателях, чтобы их можно было передавать в free
. Вы можете передавать char *
аргументы в функции, принимающие const char *
аргументы, но обратное не всегда верно.
void foo (const char *x);
char *ptr = malloc (...);
foo (ptr);
free (ptr);