Вы не должны освобождать его в своем примере second way
, и у вас нет возможности (переносимо) сделать различие между первым и вторым случаем, просто взглянув на указатель. Так что не делайте этого, убедитесь, что вы всегда выделяете string_member
, используя malloc
или, например, strdup
. Таким образом, вы всегда можете free
это (один раз).
s.string_member = strdup("some thing wrong"); // the other way
...
free(s.string_member);