Следующий код используется для поиска пути исполняемого файла для элементарной оболочки в c
.Как видите, я динамически распределяю переменную path
, а затем проверяю, существует ли путь (через lstat
в вспомогательной функции cmd_exists
).Затем я возвращаю переменную пути.Моя проблема в том, что это вызывает утечку памяти, так как path
никогда не освобождается.Я не могу освободить путь до того, как верну его значение, и на данный момент я не могу придумать способ освободить выделенную память.Если кто-нибудь может мне помочь, я буду признателен.Спасибо
char * find_path(char * mypath, char * command){
char * token = strtok(mypath, "#");
while(token != NULL){
/*token size + 1 (for /) + command size*/
char * path = calloc(strlen(token)+1+strlen(command)+1, sizeof(char));
strcat(path, token);
strcat(path, "/");
strcat(path, command);
if(cmd_exists(path) == 1){
return path;
}
token = strtok(NULL, "#");
}
return NULL;
}