2 / 2 / 0
Регистрация: 23.04.2011
Сообщений: 39
1

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

19.12.2011, 16:36. Показов 13271. Ответов 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.12.2011, 16:36
Ответы с готовыми решениями:

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

Как правильно освободить память
Есть функция char* md5(const char*). Как освободить память выделенную ею? #include &lt;openssl\md5.h&gt;...

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

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

4
21 / 21 / 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
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
1498 / 1144 / 165
Регистрация: 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
2 / 2 / 0
Регистрация: 23.04.2011
Сообщений: 39
19.12.2011, 23:11  [ТС] 5
спасибо) получилось) все в нуль ушло)
 Комментарий модератора 

Запрещено создавать темы в виде ссылок на задания или коды программ, расположенные на других сайтах.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.12.2011, 23:11
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru