С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
#1

Почему возникает утечка памяти? - C++

17.01.2013, 22:08. Просмотров 392. Ответов 3
Метки нет (Все метки)

Возник вопрос почему может возникать утечка памяти. Интересуют основные правила для их устранения.
На каждый new и malloc нужен delete и free?
Каждый класс нужно удалять (через деструктор).
А что делать с членами класса.
Если у интерфейса есть внутренний интерфейс важна ли их последовательность. Чем больше скажите тем лучше.
Можно пару слов по поводу shared_ptr.
Вопросы про вызов конструктора внутри контейнеров к примеру нового vector или boost::conteiner_ptr
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 22:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему возникает утечка памяти? (C++):

Почему происходит утечка памяти? - C++
Добрый день, форумчане! Прошу помощи в вопросе - есть функция своп. void swap(CustomVector<T>& in) throw() { ...

Утечка памяти - C++
Здравствуйте! Я пишу длинную арифметику для целых чисел. Ниже - функция произведения чисел X и Y. Вопрос: произойдет ли утечка памяти, и...

Утечка памяти - C++
Доброго времени суток. Написал оконное приложение. Столкнулся с проблемой - утекает память. Какие есть средства, чтобы определить,...

Утечка памяти - C++
Взял листинг кода из книги Стивен Прата Язык программирования С++. Меня терзают смутные сомнения нет ли здесь утечки памяти, указатель ...

Утечка памяти - C++
#include "stdafx.h" #include <iostream> #include "ArrayOperation.h" using namespace std; int main() { int...

утечка памяти - C++
доброго времени суток Уважаемые форумчане, помогите пожалуйста разобраться с утечками памяти есть массив с геометрическими фигурами. ...

3
I.M.
566 / 549 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
17.01.2013, 22:55 #2
Цитата Сообщение от vbloodv Посмотреть сообщение
Возник вопрос почему может возникать утечка памяти.
Выделили память и забыли/не смогли ее освободить.
Цитата Сообщение от vbloodv Посмотреть сообщение
Каждый класс нужно удалять (через деструктор).
Это вопрос? нет, не каждый. только те, где это нужно
Цитата Сообщение от vbloodv Посмотреть сообщение
А что делать с членами класса.
Странный вопрос. А что же тогда писать в деструкторе, если не удаление членов класса?
Цитата Сообщение от vbloodv Посмотреть сообщение
Если у интерфейса есть внутренний интерфейс важна ли их последовательность.
Что вы называете интерфейсом в С++?
Цитата Сообщение от vbloodv Посмотреть сообщение
Можно пару слов по поводу shared_ptr.
Удобная штука. Сама заботиться об удалении объекта
Цитата Сообщение от vbloodv Посмотреть сообщение
Вопросы про вызов конструктора внутри контейнеров
Задавайте ^^
1
vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
17.01.2013, 23:51  [ТС] #3
Если элемент в контейнер передается по ссылке например в vector вот таким способом:
vector.pushback(new TypeObject); Как мне его позже освобождать. Хотя вроде бы так нельзя вернее можно но через empace нового стандарта, но точно можно в boost::conteiner_ptr. Какие меня ждут последствия? Чего лучше не делать.
Возможно что при передачи параметру (new Object) лучше делать ::shared_ptr Object или что-то вроде того...
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
18.01.2013, 00:16 #4
Если элемент в контейнер передается по ссылке например в vector вот таким способом:
vector.pushback(new TypeObject);
Не ссылка, а указатель. Пройтись по вектору и очистить память. К примеру.

C++
1
std::for_each(v.begin(), v.end(), [](const TypeObject* p) { delete p; });
boost::container_ptr отдельная тема. Нужно смотреть доку и понимать что делаете. Можно сделать, чтобы он был ответственен за удаление элементов, можно нет.

Определенно в контейнерах лучше хранить shared_ptr, нежели сырые указатели.
1
18.01.2013, 00:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2013, 00:16
Привет! Вот еще темы с ответами:

утечка памяти - C++
Может кто-то проверить есть ли здесь утечка памяти? Мне почему-то кажется что есть. В задачи нужно когда пользователь сделал операции...

Утечка памяти - C++
Не могу понять как избежать утечки памяти в своей программе... привожу кусок в одном из мест где на мой взгляд она происходит... Array...

Утечка памяти - C++
Привет! написал программму, и не могу разобраться где утекает память. помогите кто сможет. Задание #include <iostream> ...

Утечка памяти - C++
Помогите с кодом, вот написал реализацию стека по заданию. Преподаватель попросил проверить, верно ли я использую delete, ибо mas в классе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.