Warum wird strdup als böse angesehen?

Ich habe einige Plakate gesehen, auf denen das stehtstrdup ist böse. Gibt es einen Konsens darüber? Ich habe es ohne Schuldgefühle benutzt und kann keinen Grund erkennen, warum es schlimmer ist als es zu benutzenmalloc/memcpy.

Das einzige, was ich denken kann, könnte verdienenstrdup ein Ruf ist, dass Anrufer es missbrauchen könnten (z. B. nicht erkennen, dass sie den zurückgegebenen Speicher freigeben müssen; versuchen Sie, strcat bis zum Ende eines strdup'ed-Strings zu setzen). Aber auch mallocierte Saiten sind nicht frei von der Möglichkeit eines Missbrauchs.

Vielen Dank für die Antworten und die Entschuldigung an diejenigen, die die Frage für nicht hilfreich halten (Stimmen zum Schließen). Zusammenfassend scheint es in den Antworten kein allgemeines Gefühl dafür zu gebenstrdup ist per se böse, aber ein allgemeiner Konsens, dass es, wie viele andere Teile von C, unsachgemäß oder unsicher verwendet werden kann.

Es gibt eigentlich keine "richtige" Antwort, aber um eine zu akzeptieren, habe ich die Antwort von @ nneoneo akzeptiert - es hätte auch die Antwort von @R .. sein können.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage