的char * XX(字符* STR) {// CONCAT現有的字符串海峽,並退回到用戶 }以下使用strdup()會導致C中的內存泄漏嗎?
而且我通過調用這個程序:
XX (strdup("CHCHCH"));
請問這個導致泄漏而不釋放什麼strdup()
生成?
這不可能是免費的XX()
的結果將完成這項工作。
(請讓我知道C和C++,謝謝!)
的char * XX(字符* STR) {// CONCAT現有的字符串海峽,並退回到用戶 }以下使用strdup()會導致C中的內存泄漏嗎?
而且我通過調用這個程序:
XX (strdup("CHCHCH"));
請問這個導致泄漏而不釋放什麼strdup()
生成?
這不可能是免費的XX()
的結果將完成這項工作。
(請讓我知道C和C++,謝謝!)
除非XX函數free()的參數傳入,否則這會導致C和C++中的內存泄漏。
是的。 strdup
的結果必須爲free
。
你可以考慮使用Boehm's garbage collector和使用GC_strdup
& GC_malloc
而不是strdup
& malloc
;那麼你不需要打擾打電話free
是的,這會泄漏。 strdup
的結果必須被釋放。
對於C++,在另一方面,我建議使用std::string
而不是char*
:
std::string XX(std::string const & in)
{
return in + std::string("Something to append");
}
這是爲了實現你在說什麼一個快速和骯髒的方式,但它是非常具有可讀性。通過將可變引用傳遞給輸出字符串,您可以獲得一些速度提升,但除非這是一個非常緊密的循環,否則沒有什麼理由這樣做,因爲它可能會增加複雜性而不會顯着引導性能。