在某些函數(如* scanf變體)中,有一個參數爲結果佔用內存空間。您也可以在代碼返回地址的地方編寫代碼。有什麼優點,爲什麼以這種奇怪的方式設計功能?C設計:傳遞內存地址或返回
例
void process_settings(char* data)
{
.... // open file and put the contents in the data memory
return;
}
VS
char* process_settings()
{
char* data = malloc(some_size);
.... // open file and load it into data memory
return data;
}
如果每次調用函數時都不想分配,該怎麼辦? – SLaks
你爲什麼不呢?該函數是否應該被分割並對它自己的內存和malloc調用負責? – Zimm3r
不適用於回傳給調用者的內存。 – SLaks