strdup
是邪恶的。 对此是否有共识?我已经使用它而没有任何罪恶感,并且看不出为什么它比使用malloc
/memcpy
更糟。唯一能想到会让
strdup
声名狼藉的事情可能是调用者可能会误用它(例如,没有意识到他们必须释放返回的内存;尝试将字符串连接到 strdup'ed 字符串的末尾)。但是,malloc 的字符串也无法免受误用的可能性。感谢回复并为认为问题无益而道歉(投票关闭)。 总之,回复中似乎没有普遍认为
strdup
本身就是邪恶的感觉,但是普遍的共识是它可以像 C 的许多其他部分一样被不当或不安全地使用。其实没有“正确”的答案,但是为了接受一个答案,我接受了@nneoneo的答案 - 它也可以是@R..'s的答案。