Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.90/31: Рейтинг темы: голосов - 31, средняя оценка - 4.90
myltdne
2 / 2 / 0
Регистрация: 23.04.2011
Сообщений: 39
#1

Как правильно освободить память

19.12.2011, 16:36. Просмотров 6165. Ответов 4
Метки нет (Все метки)

Здрасте!
(Тема: Шаблоны функций.)
Не могу правильно написать метод для освобождения памяти.
В мейне делаю все необходимые мне операции с массивами и их данными а потом мне надо освободить память.

вот то что у меня есть, вызываю вконце всех операций
(но ссылки не обнуляются :-( помогите правильно освободить память пожалуйста)

C++
1
2
3
4
5
6
7
8
9
10
11
12
template<typename T>
void CleanAllArrays(T* arr1, T* arr2, T* arr3, T* arr4)
{
    delete [] arr1;
    arr1 = nullptr;
    delete [] arr2;
    arr2 = nullptr;
    delete [] arr3;
    arr3 = nullptr;
    delete [] arr4;
    arr4 = nullptr;
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2011, 16:36
Ответы с готовыми решениями:

Как правильно освободить память
Есть функция char* md5(const char*). Как освободить память выделенную ею?...

Как правильно освободить память
Написал вот такой костыль: wchar_t* getDate() { time_t seconds =...

Как правильно освободить память
Здравствуйте все! Подскажите, как правильно освобождать память, выделенную под...

Как правильно освободить память деструктором?
Не могу понять, как освободить память деструктором... В общем, я объявляю в...

Подскажите пожалуйста, как правильно освободить память
Всем ку! Подскажите пожалуйста, как правильно удалить(освободить память)...

4
ExcellencE
20 / 20 / 16
Регистрация: 22.08.2011
Сообщений: 79
19.12.2011, 16:52 #2
C++
1
2
delete [] p_var;       // память освобождается
p_var = NULL;          // указатель заменяется на 0 (нуль-указатель)
эт если совсем массивы сносим, а если вы просто хотите значения обнулить используйте
C++
1
ZeroMemory (&objA,sizeof (objA));
0
myltdne
2 / 2 / 0
Регистрация: 23.04.2011
Сообщений: 39
19.12.2011, 22:57  [ТС] #3
мне нужно не обнулить значения в массивах, а освободить память - "выкинуть мусор"

Цитата Сообщение от ExcellencE Посмотреть сообщение
C++
1
2
delete [] p_var;    // память освобождается
p_var = NULL;    // указатель заменяется на 0 (нуль-указатель)
я так и делаю, но вот что в оке просмотра я вижу

скрин

а мне нужно освободить память. что значат все эти цифры емае, я же удаляю и ставлю ссылку nullptr
0
DU
1486 / 1132 / 164
Регистрация: 05.12.2011
Сообщений: 2,279
19.12.2011, 23:00 #4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

код один а на скрине совсем другое. + в ф-ии CleanAllArrays нуллптр вы присваиваете локальной переменной. на вызывающей стороне от этого значения указателей не поменяются. для этого нужно ссылку на указатель передавать.
может вам это надо:
C++
1
2
3
4
5
6
7
8
9
10
11
12
template<typename T>
void CleanAllArrays(T*& arr1, T*& arr2, T*& arr3, T*& arr4)
{
        delete [] arr1;
        arr1 = nullptr;
        delete [] arr2;
        arr2 = nullptr;
        delete [] arr3;
        arr3 = nullptr;
        delete [] arr4;
        arr4 = nullptr;
}
1
myltdne
2 / 2 / 0
Регистрация: 23.04.2011
Сообщений: 39
19.12.2011, 23:11  [ТС] #5
спасибо) получилось) все в нуль ушло)
 Комментарий модератора 

Запрещено создавать темы в виде ссылок на задания или коды программ, расположенные на других сайтах.
0
19.12.2011, 23:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2011, 23:11

Динамическая матрица. Как правильно освободить память?
int ROWS = NULL; // Объявление переменных для строк и столбцов. int COLS =...

Как правильно освободить память после работы с динамическим массивом
Здравствуйте! Помогите понять в чём проблема при освобождении памяти. Простой...

Как освободить память?
подскажите как правильно освободить память,спасибо заранее))) #include...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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