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

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - 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