История изменений
Исправление Xenius, (текущая версия) :
Скажем, есть у тебя статическая переменная: один раз выделил память, а дальше она постоянно используется, free() здесь делать нельзя.
free делать после последнего использования
Еще более распространенный вариант: твоя функция выделяет память под объект и возвращает его (например, как strdup)!
Если функция возвращает указатель, то память, выделенную под него чистить не нужно, если функция возвращает значение — то все локальные переменные чистить.
Кстати, что думаешь о Tcl и Lua? Второй вроде побыстрее, но памяти больше жрёт. При некоторых оптимизациях начинает работать не так уж и медленно.
Исправление Xenius, :
Скажем, есть у тебя статическая переменная: один раз выделил память, а дальше она постоянно используется, free() здесь делать нельзя.
free делать после последнего использования
Еще более распространенный вариант: твоя функция выделяет память под объект и возвращает его (например, как strdup)!
Если функция возвращает указатель, то память, выделенную под него чистить не нужно, если функция возвращает значение — то все локальные переменные чистить.
Кстати, что думаешь о Tcl и Lua? Второй вроде побыстрее, но памяти больше жрёт.
Исходная версия Xenius, :
Скажем, есть у тебя статическая переменная: один раз выделил память, а дальше она постоянно используется, free() здесь делать нельзя.
free делать после последнего использования
Еще более распространенный вариант: твоя функция выделяет память под объект и возвращает его (например, как strdup)!
Если функция возвращает указатель, то память, выделенную под него чистить не нужно, если функция возвращает значение — то все локальные переменные чистить.