我看过一些海报说这strdup
是邪恶的。对此是否有共识?我使用它时没有任何内疚感,并且看不出它比使用malloc
/更糟糕的原因memcpy
。
我能想到的唯一可能赢得strdup
声誉的是调用者可能会滥用它(例如,没有意识到他们必须释放返回的内存;尝试将 strcat 放到 strdup 字符串的末尾)。但是,malloc'ed 字符串也不是没有被滥用的可能性。
感谢那些认为这个问题没有帮助的人的回复和道歉(投票结束)。总结这些回复,似乎没有普遍的感觉strdup
本身就是邪恶的,而是普遍认为它可以像 C 的许多其他部分一样被不当或不安全地使用。
确实没有“正确”的答案,但为了接受一个,我接受了@nneoneo 的答案——它同样可能是@R.. 的答案。