Утечка памяти в функции - C (СИ)
Формулировка задачи:
Сама суть
Есть fcgi-приложение которое парсит полученные get-данные и потом производит выборку по MySQL.
В приложении есть функция, через которую утекает память, остальные отключал утечка продолжалась, отключил эту - утечки нет.
Вот сама функция
Где char *s нужный get в запросе (например "local"), а char *gete это переданный getenv("QUERY_STRING")
Пробовал с использованием strtok - эффект тот же - утечка.
Все мозги себе сломал, откуда уткает.
OC Linux, сервер Lighttpd
Пожалуйста, помогите.
char * GET_(char *s, char *gete){ char query[100000], url[100000], *ret_1; int i = 0, flag = 0; sprintf(url, "&%s", gete); sprintf(query, "&%s=", s); if(strstr(url, query) == '\0') return "";//если такого get не существует ret_1 = strstr(url, query); for(i = 0;;i++){ if(ret_1[i] == '&' || ret_1[i] == '\0'){ flag = i; break; } } ret_1 = strstr(ret_1, "="); for(i = 0;;i++){ if(ret_1[i] == '&' || ret_1[i] == '\0'){ flag = i; break; } } for(i = 0;;i++){ if(ret_1[i] == '&' || ret_1[i] == '\0'){ ret_1[i] = '\0'; break; }else if(ret_1[i] == '='){ continue; }else{ ret_1[i-1] = ret_1[i]; } } ret_1[i-1] = '\0'; return ret_1; }
Решение задачи: «Утечка памяти в функции»
textual
Листинг программы
int qlen; char *query, *foo, *bar; if (!(query = env_getvar("QUERY_STRING", &qlen))) /* ошибка */;; if (!(foo = query_getarg("foo=", query, qlen))) /* нету или пустое значение у "foo" в запросе */;;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д