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

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