Выход от pthread освобождают malloced память?

Я думаю, что лучшим способом для больших проектов является optparse, но если Вы ищете простой способ, возможно , http://werkzeug.pocoo.org/documentation/script является чем-то для Вас.

from werkzeug import script

# actions go here
def action_foo(name=""):
    """action foo does foo"""
    pass

def action_bar(id=0, title="default title"):
    """action bar does bar"""
    pass

if __name__ == '__main__':
    script.run()

, Таким образом, в основном каждая функция action_* подвергнута командной строке, и хорошее сообщение справки сгенерировано бесплатно.

python foo.py 
usage: foo.py  []
       foo.py --help

actions:
  bar:
    action bar does bar

    --id                          integer   0
    --title                       string    default title

  foo:
    action foo does foo

    --name                        string

5
задан Roman Nikitchenko 9 July 2013 в 08:21
поделиться

4 ответа

  • Потоки совместно используют ресурсы памяти (по крайней мере, POSIX).
  • Управление памятью malloc () / realloc () / free () фактически не знает о потоках (по крайней мере, сейчас).
  • Таким образом, вы должны относиться к результатам malloc () как к простому «ресурсу». Он не связан с потоками.

Итак, теперь ответ должен быть очевиден: любая выделенная память не связана с потоками, поэтому это не free () d при выходе из потока. Конечно, вы можете предоставить особую обработку механика, но это не выполняется автоматически.

Хорошая сторона этого состоит в том, что вы можете передавать распределение памяти между потоками, другими словами выделять такой ресурс в одном потоке, а затем освобождать его от другого (хорошо это для вас или нет).

Надеюсь, это будет полезным объяснением, подумайте об указателе выделенной памяти, как о любом дескрипторе уровня процесса.

8
ответ дан 18 December 2019 в 10:46
поделиться

Нет - память с неправильной локализацией освобождается только с помощью явного «освобождения».

4
ответ дан 18 December 2019 в 10:46
поделиться

Я почти уверен, что это не так, вы должны использовать free ().

1
ответ дан 18 December 2019 в 10:46
поделиться

Нет. Хотя при выходе из процесса любая искаженная память освобождается, этого не происходит при выходе из потока.

1
ответ дан 18 December 2019 в 10:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: