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