Я обычно свободный каждый выделенный блок, как только я уверен, что сделан с ним. Сегодня, точка входа моей программы могла бы быть main(int argc, char *argv[])
, но завтра это могло бы быть foo_entry_point(char **args, struct foo *f)
и введено как указатель функции.
Так, если это происходит, у меня теперь есть утечка.
Относительно Вашего второго вопроса, если бы моя программа взяла вход как a=5, я выделил бы место для a или перераспределил бы то же пространство на последующем = "нечто". Это осталось бы выделенным до:
, я не могу думать ни о каком современный ОС, которая не исправляет память после того, как процесс выходит. С другой стороны, свободный () является дешевым, почему бы не вымыться? Как другие сказали, инструменты как valgrind являются большими для определения утечек, о которых действительно необходимо волноваться. Даже при том, что блоки у Вас, которые пример был бы маркирован как 'все еще достижимый', его просто дополнительный шум в выводе, когда Вы пытаетесь гарантировать Вам, нет утечек.
Другой миф" , Если в основном (), я не должен освобождать его ", это неправильно. Рассмотрите следующее:
char *t;
for (i=0; i < 255; i++) {
t = strdup(foo->name);
let_strtok_eat_away_at(t);
}
, Если это прибыло до разветвления / daemonizing (и в теории, работающей навсегда), Ваша программа только что пропустила неопределенный размер t 255 раз.
А хорошая, правильно написанная программа должна всегда мыться после себя. Свободный вся память, сбросьте все файлы, закройте все дескрипторы, удалите связь со всеми временными файлами и т.д. Эта функция очистки должна быть достигнута после нормального завершения, или после получения различных видов фатальных сигналов, если Вы не хотите разбросать некоторые файлы, кладущие, таким образом, можно обнаружить катастрофический отказ и резюме.
Действительно, быть добрым к плохой душе, которая должна поддержать Ваш материал, когда Вы идете дальше к другим вещам.. вручите его им 'valgrind чистый':)
Вы можете проверить содержимое ответа, возвращенного на ваш вызов jQuery ajax. Использование такого инструмента, как Firebug, может сделать это довольно легко.
Django по-прежнему будет возвращать страницу отладки, просто он отвечает на вызов ajax, а не на обычный запрос браузера.
Часто это хороший способ получить вашу вещи, работающие с обычными запросами, а затем "ajaxify" их только после того, как вы убедитесь, что код на стороне сервера работает.
Вы можете использовать этот фрагмент: http://www.djangosnippets.org/snippets/650/ , чтобы получить обратную трассировку открытого текста для просмотра в firebug вместо HTML.
Вероятно, самый простой способ - отключить отладку и полагаться на отладочные сообщения электронной почты, которые отправляет Django. Однако это не всегда практично, но работает.