Утечка памяти в функции - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Сама суть Есть fcgi-приложение которое парсит полученные get-данные и потом производит выборку по MySQL. В приложении есть функция, через которую утекает память, остальные отключал утечка продолжалась, отключил эту - утечки нет. Вот сама функция
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;
}
Где char *s нужный get в запросе (например "local"), а char *gete это переданный getenv("QUERY_STRING") Пробовал с использованием strtok - эффект тот же - утечка. Все мозги себе сломал, откуда уткает. OC Linux, сервер Lighttpd Пожалуйста, помогите.

Решение задачи: «Утечка памяти в функции»

textual
Листинг программы
int qlen;
char *query, *foo, *bar;
if (!(query = env_getvar("QUERY_STRING", &qlen)))
  /* ошибка */;;
if (!(foo = query_getarg("foo=", query, qlen)))
  /* нету или пустое значение у "foo" в запросе */;;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.5 из 5
Похожие ответы