Dlaczego strdup uważany jest za zły
Widziałem kilka plakatów o tym informującychstrdup
jest zła. Czy istnieje konsensus w tej sprawie? Użyłem go bez żadnych uczuć winy i nie widzę powodu, dla którego jest gorzej niż używaniemalloc
/memcpy
.
Jedyne, co mogę myśleć, może zarobićstrdup
reputacja polega na tym, że osoby dzwoniące mogą nadużywać go (np. nie zdają sobie sprawy, że muszą zwolnić zwróconą pamięć; spróbuj stratch na koniec łańcucha strdup). Ale wtedy łańcuchy malloc'ed nie są wolne od możliwości niewłaściwego użycia.
Dziękuję za odpowiedzi i przeprosiny tym, którzy uważają pytanie za nieprzydatne (głosowanie za zamknięciem). Podsumowując odpowiedzi, wydaje się, że nie ma ogólnego odczuciastrdup
jest zło per se, ale ogólny konsensus, że może, podobnie jak wiele innych części C, być używany niewłaściwie lub nie.
Naprawdę nie ma „poprawnej” odpowiedzi, ale dla zaakceptowania jednej zaakceptowałem odpowiedź @ nneoneo - równie dobrze mogła to być odpowiedź @R ..