Ли Linux автоматически повторно заявляет всю память, используемую приложениями немедленно?
Нет, но да, в том смысле, что вы подразумеваете. Выпущена вся виртуальная память, принадлежащая процессу. Рамки, которые не являются общедоступными, становятся доступными для других процессов.
Если это так, приложение должно действительно беспокоиться о освобождении всей памяти перед выходом?
Да, по нескольким причинам:
- Вы можете принять решение о продлении кода по отношению к другим целям в будущем, добавив очистки позже может быть затруднено.
- У вас чрезмерное использование памяти, и на самом деле нужно, чтобы пространство виртуальной памяти «терялось».
- Вам нужно отследить некоторые ошибки: не тщательное освобождение приобретенных ресурсов затруднит отладку.
Бывают ситуации, которые могут возникнуть, когда освобождение памяти не является тем, что вы хотите, как правило, это будет связано с производительностью и зависит только от этих ситуаций.
Действительно ли стоит вызвать деструктор каждого класса в многопоточном приложении перед тем, как позвонить (0)?
Это почти то же самое, что и последний вопрос. Также обратите внимание, что не освобождение ресурсов от сторонних производителей и библиотек ОС фактически не отличается от освобождения памяти.
Если Linux всегда повторно заявляет всю память, используемую приложением немедленно, то утечки памяти являются только оборванными указателями, которые было создано приложением, и это тоже только время его жизни.
Yup. Единственный раз, когда эта теория ломается, - это когда ресурсы являются глобальными и не исчезают при завершении процесса. Примерами являются общая память, плохо разработанные сторонние библиотеки, временные файлы и т. Д.
Кроме того, профессионализм. – Joe
@Hasturkun: Спасибо, я никогда не цитировал до –
@ Joe: Что ты имеешь в виду? –