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 ..

questionAnswers(6)

yourAnswerToTheQuestion