char * XX(char * str) { //使用str CONCAT现有字符串,并返回给用户 }
我称之为:
XX ( strdup("CHCHCH") );
这会导致泄漏而不释放strdup()
生成的内容吗?
释放XX()
的结果不太可能完成这项任务。
(请用C和C ++告诉我,谢谢!)
答案 0 :(得分:3)
除非XX函数free()传入了参数,否则这将导致C和C ++中的内存泄漏。
答案 1 :(得分:1)
是。某些内容必须free
strdup
的结果。
您可以考虑使用Boehm's garbage collector并使用GC_strdup
& GC_malloc
代替strdup
& malloc
;那么你不需要打扰调用free
答案 2 :(得分:1)
是的,这会泄漏。必须释放strdup
的结果。
对于C ++,我建议使用std::string
而不是char*
:
std::string XX( std::string const & in )
{
return in + std::string( "Something to append" );
}
这是一种快速而肮脏的方式来实现您所说的内容,但它非常易读。您可以通过将可变引用传递给字符串进行输出来获得一些速度提升,但除非这是一个非常紧凑的循环,否则没有理由这样做,因为它可能会增加复杂性而不会显着启动性能。