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

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

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

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

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

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

Цитата:
А разве ее тут нет? Она конечно будет ликвидирована когда программа завершится, но всетки. Она же в примере твоем есть. Или я ошибаюсь?
есть, есть.
rrrFer вне форума Ответить с цитированием
Старый 10.11.2014, 10:45   #32
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А разве ее тут нет? Она конечно будет ликвидирована когда программа завершится, но всетки. Она же в примере твоем есть. Или я ошибаюсь?
Конечно есть. Признаю был не прав, когда использовал термин утечка, не по поназначению. И плохо не писать delete, если написал new даже в маленьком примере. Можно потом легко забыть написать в реальном проекте

А чтобы не забыть писать delete или случайно не написать delete 2 раза или случайно слишком рано не написать delete или не забыть написать [] (в случае удаления массива) нужно вместо этой конструкции:
Код:
int *a = new int[10]
// ...
delete [] a;
Писать вот такую:
Код:
std::vector<int> a( n );
Примеры для сравнения:
Код:
#include <iostream>     // std::cout

int main()
{
    const size_t n = 10;
    int *a = new int[n];

    // Fill
    for( size_t i = 0; i < n; ++i ) {
        a[i] = i;
    }

    // Show
    for( size_t i = 0; i < n; ++i ) {
        std::cout << " " << a[i];
    }
    std::cout << "\n";

    delete [] a;
    return 0;
}
Код:
#include <iostream>     // std::cout
#include <vector>       // std::vector

int main()
{
    const size_t n = 10;
    std::vector<int> a( n );

    // Fill
    for( size_t i = 0; i < n; ++i ) {
        a[i] = i;
    }

    // Show
    for( int x: a ) {
        std::cout << " " << x;
    }
    std::cout << "\n";

    return 0;
}

Последний раз редактировалось 8Observer8; 10.11.2014 в 13:50.
8Observer8 вне форума Ответить с цитированием
Старый 10.11.2014, 12:22   #33
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Ну окей, последний вопрос по утечкам

Цитата:
Примеры для сравнения:
Код:
#include <iostream>     // std::cout

int main()
{
    const size_t n = 10;
    int *a = new int[n];

    // Fill
    for( size_t i = 0; i < n; ++i ) {
        a[i] = i;
    }

    // Show
    for( size_t i = 0; i < n; ++i ) {
        std::cout << " " << a[i];
    }
    std::cout << "\n";

    delete a;
    return 0;
}
Тут нет утечки? -я процитировал твой код примеров без изменений
rrrFer вне форума Ответить с цитированием
Старый 10.11.2014, 13:26   #34
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Это описка. Я просто поторопился: delete [] a;
8Observer8 вне форума Ответить с цитированием
Старый 10.11.2014, 13:49   #35
8Observer8
Старожил
 
Регистрация: 02.01.2011
Сообщений: 3,328
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
А чтобы не забыть писать delete или случайно не написать delete 2 раза или случайно слишком рано не написать delete нужно вместо этой конструкции:
Тогда здесь надо добавить: "чтобы .. не забыть написать [] (в случае удаления массива)"
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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