Для функций преобразования Unicode вам необходимо выделить память для хранения преобразованных строк. Вы отвечаете за время жизни этой памяти.
Для GetCommandLine вам не нужно освобождать возвращенный блок памяти.
Основное правило заключается в том, что вы должны освободить память тогда и только тогда, когда вы распределили память.