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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Abbat_90
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 26
#1

Утечка памяти - C++

16.10.2011, 23:32. Просмотров 1252. Ответов 10
Метки нет (Все метки)

Не могу понять как избежать утечки памяти в своей программе... привожу кусок в одном из мест где на мой взгляд она происходит...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
Array Array::Add(Array a, Array b)
        {
        Array *N = new Array;
 
         if (a.size>=b.size) {
        for (int i=0; i<b.size; i++) {N->mas[i]=a.mas[i]+b.mas[i]; }
                for(int i=b.size; i<a.size; i++) {N->mas[i]=a.mas[i];}
                N->size = a.size;        }
        else {for (int i=0; i<a.size; i++) {N->mas[i]=a.mas[i]+b.mas[i]; }
                for(int i=a.size; i<b.size; i++) {N->mas[i]=b.mas[i];} N->size = b.size;}
          return *N;
          delete N;
        }
В результате компилялии выдаёт предупреждение unreachable cod или что-то на подобе этого...
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2011, 23:32     Утечка памяти
Посмотрите здесь:

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

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

Утечка памяти - C++
Где я допустил ее(утечку)? #define _CRT_SECURE_NO_WARNINGS #include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;string&gt; class...

Утечка памяти - C++
Подскажите, где здесь может возникать утечка памяти? Вроде везде, где можно - чищу... ///////////////////////////////////// // It's...

Утечка памяти - C++
Господа подскажите как узнать какая п̶а̶д̶л̶а̶ переменная жрет память? Или как посмотреть сколько вообще переменных и объектов находятся в...

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

утечка памяти - C++
если запустить код char *pointer = NULL; for( int i = 0; i &lt; 10; i++ ) { pointer = new char; } delete pointer; , то есть...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
16.10.2011, 23:33     Утечка памяти #2
Abbat_90, 12-ая строка никогда не выполнится.
Abbat_90
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 26
16.10.2011, 23:39  [ТС]     Утечка памяти #3
так вот как этого избежать???
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
16.10.2011, 23:46     Утечка памяти #4
Abbat_90, не выделять память динамически.
Abbat_90
0 / 0 / 0
Регистрация: 11.10.2011
Сообщений: 26
16.10.2011, 23:51  [ТС]     Утечка памяти #5
а если хочется???
alkagolik
Заблокирован
17.10.2011, 00:11     Утечка памяти #6
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <stdlib.h>
 
int *create_some(int size)
{
    int *some;
 
    some = (int*)malloc(size * sizeof(int));
 
    return some;
}
 
void delete_some(int *some)
{
    free(some);
}
 
int main()
{
    int *x, i;
    x = create_some(10);
    for (i = 0; i < 10; ++i)
        printf("%i\n", x[i]);
    delete_some(x);
    return 0;
}
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
17.10.2011, 00:13     Утечка памяти #7
как вариант, используйте умные указатели=)
accept
4821 / 3241 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
17.10.2011, 04:28     Утечка памяти #8
Цитата Сообщение от Abbat_90
Не могу понять как избежать утечки памяти в своей программе
если выделяешь память, нельзя терять указатель
C++
1
return N;
тип возвращаемого значения меняется на Array *
Евгений М.
1035 / 976 / 54
Регистрация: 28.02.2010
Сообщений: 2,829
Завершенные тесты: 2
17.10.2011, 13:35     Утечка памяти #9
Abbat_90, если метод не статический, то поставьте delete в деструктор.

Добавлено через 2 минуты
Хотя неправильно сказал. Сработает, если только 1 раз вызвать функцию Add.
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
17.10.2011, 13:41     Утечка памяти #10
Цитата Сообщение от Abbat_90 Посмотреть сообщение
а если хочется???
В Вашем примере нет смысла в динамической памяти (если только показать утечку). Количество объектов известно на стадии компиляции - он один. Объект из метода возвращается по значению, а не указатель. Память выделяется и удаляется в одном месте.
"Хочется" - это не достаточный аргумент, чтобы использовать new.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2011, 16:15     Утечка памяти
Еще ссылки по теме:

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

Утечка памяти - C++
Доброго времени суток, форумчане. Помогите справиться с утечкой памяти, не понятно где зараза засела. Это класс представления числа в СОК...

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

Утечка памяти в - C++
Кто подскажет плиз. Тут у меня утечка памяти foreach (var file in xpsFiles) { ...

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


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

Или воспользуйтесь поиском по форуму:
silentnuke
Android Programmer
139 / 140 / 5
Регистрация: 08.12.2010
Сообщений: 421
17.10.2011, 16:15     Утечка памяти #11
Цитата Сообщение от Евгений М. Посмотреть сообщение
Abbat_90, если метод не статический, то поставьте delete в деструктор.

Добавлено через 2 минуты
Хотя неправильно сказал. Сработает, если только 1 раз вызвать функцию Add.
причем здесь деструктор, если это не член класса?
он не имеет указателя на эту память.
Yandex
Объявления
17.10.2011, 16:15     Утечка памяти
Ответ Создать тему
Опции темы

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