Я видел несколько плакатов, в которых говорится, что strdup
- зло. Есть ли консенсус по этому поводу? Я использовал его без каких-либо вины и не вижу причин, почему это хуже, чем использование malloc
/memcpy
.
Единственное, что я могу думать, может заработать strdup
, поскольку репутация заключается в том, что вызывающие пользователи могут злоупотреблять им (например, не осознают, что им нужно освободить возвращенную память, попробуйте strcat до конца строки strdup'ed). Но тогда строки malloc'ed также не свободны от возможности неправильного использования.
Спасибо за ответы и извинения тем, кто считает вопрос бесполезным (голоса закрываются). В резюме ответов, кажется, нет общего чувства, что strdup
является злом как таковым, но общее согласие в том, что оно может, как и многие другие части C, использоваться неправильно или ненадлежащим образом.
На самом деле нет "правильного" ответа, но ради его принятия я принял @nneoneo ответ - он мог также быть ответом @R..