Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
besh]<a
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
#1

подскажите пожалуйста, правильно ли сделанна конструкция, и не будет ли утечки памяти - C++

07.11.2010, 21:46. Просмотров 329. Ответов 5
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
  vector<int*> mas;
 
int* buf;
for(int i=0;i<10;i++)
{
  buf=new int[10];
  mas.push_back(buf);
}
delete buf;
for(int i=0;i<10;i++)
{
    delete mas[i];
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2010, 21:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос подскажите пожалуйста, правильно ли сделанна конструкция, и не будет ли утечки памяти (C++):

Не будет ли утечки памяти? - C++
Привет. Мне нужно очистить строку (массив символов) char str; делаю так str = '\0'; не будет ли это утечкой? P. S. думаю нет,...

Пожалуйста подскажите как правильно! - C++
Получите целочисленную матрицу A размеров nxm, для которой aij=i+2j

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

Подскажите пожалуйста, что я дулаю не правильно? - C++
// my5.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using std::cout; ...

Подскажите пожалуйста как правильно расспечатать - C++
Всем привет! Как правильно расспечатать? void fun(void ** vaddr){ printf(&quot;%p&quot;, *(int*)vaddr); } Так будет...

Я создаю утечки памяти ! - C++
Нет, я не хочу похвастаться этим. Я любитель использовать быстрые решение для того чтобы реализовать алгоритм или проверить &quot;чтобы...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
07.11.2010, 21:49 #2
утечки вроде как не будет, но конструкция надо сказать не очень
C++
1
std::vector<std::vector<int> > mas;
так то оно получше будет
1
besh]<a
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
07.11.2010, 21:58  [ТС] #3
Ну там массив в контейнере не вилик, размер меняется от 1 до 5, не хотелось изза этого помещать вектор в каждый контейнер. А вот размер вектора довольно таки большой, поэтому решил использовать указатель в контейнере.
0
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,370
07.11.2010, 22:01 #4
Утечка - может, будет, а может, не будет. Гарантированно будет неопределенное поведение.

Ошибок в этом коде я вижу две:
1. Если память выделяется через new int[что-то], то удаление должно выполняться delete[], и никак иначе - т.е. должно быть delete[] mas[i];
2. Блок памяти mas[9] будет удаляться дважды - первый раз в строке 9, второй раз в строке 12. Скорее всего, при втором удалении программа просто вылетит....
1
besh]<a
13 / 11 / 1
Регистрация: 02.11.2009
Сообщений: 194
07.11.2010, 22:10  [ТС] #5
delete buf; - да ступил чето, а ведь говорил себе, что буду освобождать память только через вектор)
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
07.11.2010, 22:11 #6
Цитата Сообщение от besh
<a;1092408]Ну там массив в контейнере не вилик, размер меняется от 1 до 5, не хотелось изза этого помещать вектор в каждый контейнер. А вот размер вектора довольно таки большой, поэтому решил использовать указатель в контейнере.
Глупости это все, не такой уж он и большой:
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <vector>
 
int main()
{
        std::vector<int> v;
        std::cout << sizeof(v) << std::endl;
}
У меня результат равен 24 байтам - мелочь какая-то.

А теперь попробуйте сопоставить размер в байтах со временем, которое Вы потратите на изобретение рабочей конструкции. Это при учете того, что в векторе должны быть обработки исключительных ситуаций, которые может бросить new. Ваш код разрастется до невероятных размеров. Будьте проще. Если уж используете вектора, так используйте их.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2010, 22:11
Привет! Вот еще темы с ответами:

Про утечки памяти - C++
Здравствуйте. Может кто-нибудь посоветовать статьи на тему борьбы с утечками памяти? Дело в том, что недавно начал писать на C++ с...

Определение утечки памяти - C++
Здравствуйте! Имеется такая ситуации: к проекту подключается lib файл и создается класс наследуемый класс определенный в либе. Подскажите...

Поиск утечки памяти - C++
Здравствуйте! Не могли бы вы помочь мне найти утечку памяти в программе? Весь день искал, все вроде бы удаляется, но 4 мб все равно...

Утечки памяти и STL - C++
Имеется код: #include &lt;map&gt; #define _CRTDBG_MAP_ALLOC #include &lt;stdlib.h&gt; #include &lt;crtdbg.h&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
07.11.2010, 22:11
Ответ Создать тему
Опции темы

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