asprintf說asprintf - 何時使用free()?
功能asprintf()和vasprintf()被sprintf的類似物(3)和 vsprintf中(3),不同之處在於它們分配一個字符串大到足以容納 包括終止空輸出字節,並通過第一個參數向它返回一個指針 。 應將此指針傳遞給免費(3) 以在不再需要時釋放分配的存儲。
這裏是我的C代碼
void function(){
char *out = NULL;
int parts[16] = {1,2,05,003};
asprintf(&out, "%d.%d.%d.%d", parts[0], parts[1], parts[2], parts[3]);
// free(out);
}
int main(void){
function();
return 0;
}
當功能調試模式監控,我看到,當它從函數返回變量已經被銷燬。爲什麼我不需要free()
上面的代碼?
你能告訴我,我需要使用免費什麼情況下asprintf
?
順便說一句,我有 「gcc版本4.7.2(Ubuntu的/ Linaro的4.7.2-2ubuntu1)」
不,你在那裏做的是創建一個漂亮的內存泄漏。 –
你不理解動態內存的概念。多讀一點,重新思考你所做的一切。 – Dariusz