Этот вопрос такой же, как в заголовке: Возможно ли произвести утечку памяти без использования каких-либо конкретных средств ядра, таких как malloc, new и т. Д.?Возможно ли утечку памяти без использования malloc?
Что делать, если я создам связанный список внутри функции с множеством элементов, а после этого я выйду из этой функции, не очищая список. Список будет создан без использования каких-либо таНос вызовов, т.е.
struct list_head {
struct list_head *next, *prev;
}
Можно ли гарантировать, что все ресурсы будут освобождены после выхода из этой функции? Так что я могу свободно исполнить его миллион раз, и ничего не будет просочиться?
Тема: Если вы не используете какой-либо конкретный malloc или новые вызовы, вы не получите утечку памяти кучи. Никогда. Это правильно?
Ни одна строка в вашем примере не находится в стеке. Для первого это только * указатель *, который находится в стеке, фактическая строка находится где-то в другом месте. Второй ('string2') * был бы * включен в стек, если вы назначили его в объявлении, но теперь у вас есть только ошибка компиляции. –
Jist вопроса выглядит как [what-and-where-are-the-stack-and-heap? Какая разница?] (Http://stackoverflow.com/questions/79923/what-and-where- «Стоп-стоп-куча». [Где идет струнный литерал?] (http://stackoverflow.com/questions/2589949/c-string-literals-where-do-they-go) –
Что касается утечки , Только если вы что-то выделяете, но никогда не выделяете его, у вас будет утечка. Как открытие файла, но не закрытие его, или выделение памяти с помощью 'malloc' или' new', но не освобождение его с помощью 'free' или' delete'. –