Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2014, 09:43   #21
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Я имел ввиду ситуацию, когда память будет реально утекать. Есты вызвать average() один раз, то ничего не утечёт
Ну как не утечет то?
Еще раз, как в этом случае наличие утечки связано с количеством вызовов функции?
rrrFer вне форума Ответить с цитированием
Старый 09.11.2014, 11:00   #22
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Цитата:
Ну как не утечет то?
Еще раз, как в этом случае наличие утечки связано с количеством вызовов функции?
В данной программе не утечёт. Нам не нужно здесь следить за освобождением. Если бы вызвали два раза функцию, то утекла бы
8Observer8 вне форума Ответить с цитированием
Старый 09.11.2014, 11:38   #23
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
В данной программе не утечёт. Нам не нужно здесь следить за освобождением. Если бы вызвали два раза функцию, то утекла бы
Что такое утечка тогда? - я не понимаю, научи меня.

Код:
int *a = new int;
a = new int;
Обсервер, тут есть утечка?

Последний раз редактировалось rrrFer; 09.11.2014 в 12:14.
rrrFer вне форума Ответить с цитированием
Старый 09.11.2014, 12:54   #24
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Что такое утечка тогда? - я не понимаю, научи меня.
Всё очень просто. Утечка - это когда мы теряем контроль над ресурсом

Цитата:
Сообщение от rrrFer Посмотреть сообщение
Код:
int *a = new int;
a = new int;
Обсервер, тут есть утечка?
Да, конечно! Потеряли контроль над ресурсом
8Observer8 вне форума Ответить с цитированием
Старый 09.11.2014, 16:28   #25
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Да, конечно! Потеряли контроль над ресурсом
Неужели тут тоже утечка?
Код:
void foo() {
  int *a = new int;
}
rrrFer вне форума Ответить с цитированием
Старый 09.11.2014, 17:17   #26
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Под "память не течёт" я имел ввиду, что мы не взяли больше, чем нам надо. После выхода из функции ресурс всё ещё занят, но это очень короткое время. И в данном примере можно не писать delete. Особенно в таком примере от не нужен:
Код:
#include <iostream>

int main()
{
    int *a = new int;

    *a = 5;
    std::cout << *a << std::endl;

    return 0;
}
Строго говоря, написать delete надо было. Но для решения данной задачи можно не писать. И лучше вообще стараться не использовать new\delete, а использовать контейнеры и умные указатели, так как всегда есть опасность забыть написать delete

Последний раз редактировалось 8Observer8; 09.11.2014 в 17:44.
8Observer8 вне форума Ответить с цитированием
Старый 09.11.2014, 18:36   #27
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Под "память не течёт" я имел ввиду, что мы не взяли больше, чем нам надо. После выхода из функции ресурс всё ещё занят, но это очень короткое время. И в данном примере можно не писать delete. Особенно в таком примере от не нужен:
Т.е. ты предлагаешь приучать студентов говнокодить под предлогом, что в их маленьких программах "утечки - это не больно"? - я думаю ты не прав.

Цитата:
И лучше вообще стараться не использовать new\delete, а использовать контейнеры и умные указатели, так как всегда есть опасность забыть написать delete
лучше, но не для студентов
rrrFer вне форума Ответить с цитированием
Старый 09.11.2014, 19:44   #28
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Поводу delete согласен. Если пишешь new, то обязательно нужно написать delete

Студент обязан знать, как старые проблемы решаются в новом C++11. Итог. Для того, чтобы не было утечек используем контейнеры. Отказываемся от new\delete, а используем shared_ptr, unique_ptr
8Observer8 вне форума Ответить с цитированием
Старый 10.11.2014, 03:20   #29
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Студент обязан знать, как старые проблемы решаются в новом C++11. Итог. Для того, чтобы не было утечек используем контейнеры. Отказываемся от new\delete, а используем shared_ptr, unique_ptr
Узнает потом.

Студентов учат программированию в целом, а не программмированию на С++. Т.е. тонкости и фичи не нужны и не важны, гораздо важнее алгоритмическая подготовка. А вы тут грите - "вызвать стандартный sort" и прочее.

Цитата:
Студент обязан знать
Мне кажется, ты недавно узнал что-то новое и теперь считаешь что все должны это знать ))
rrrFer вне форума Ответить с цитированием
Старый 10.11.2014, 07:21   #30
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Неужели тут тоже утечка?
А разве ее тут нет? Она конечно будет ликвидирована когда программа завершится, но всетки. Она же в примере твоем есть. Или я ошибаюсь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дан массив X(N,M).Найти номера столбцов массива,все элементы которых четны. Из полученных значений сформировать одномерный массив. darwin1 Паскаль, Turbo Pascal, PascalABC.NET 3 16.03.2014 13:31
Одномерный массив 12 элементов,случайные положительные и отрицательные. Найти элемент наиболее близкий к среднему значению(Паскаль 1998y8m1d Помощь студентам 6 16.12.2013 17:06
Найти одномерный массив элементы которого равны минимальным значениям в строках исходной матрицы и одномерный массив элементы... Richik123 Microsoft Office Excel 1 16.10.2013 15:45
Дан одномерный массив. Удалить все элементы последовательности значения,которые кратны k Кристюша5 Паскаль, Turbo Pascal, PascalABC.NET 4 27.05.2012 21:46
Дан файл целых чисел. Удалить из него все отрицательные числа vaako Паскаль, Turbo Pascal, PascalABC.NET 5 12.04.2012 22:45