Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Nikitko_Cent
131 / 101 / 8
Регистрация: 27.10.2011
Сообщений: 648
Завершенные тесты: 2
#1

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

17.06.2014, 07:25. Просмотров 346. Ответов 4
Метки нет (Все метки)

Написал вот такой костыль:
C++
1
2
3
4
5
6
7
wchar_t* getDate()
{
    time_t seconds = time(NULL);
    tm timeinfo = *(localtime(&seconds));
 
    return _wasctime(&timeinfo);
};
Теперь его использую в main:
C++
1
2
3
4
5
6
7
wchar_t *date=getDate();
 
if (date!=nullptr)
{
    ...
        
};
Как правильно освободить область памяти, на которую указывает date? За delete и delete [] получаю по рукам.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2014, 07:25     Как правильно освободить память
Посмотрите здесь:

Как освободить память? C++
C++ Подскажите пожалуйста, как правильно освободить память
C++ Как освободить память быстро?
C++ Как правильно освободить память
C++ как освободить память?
Как освободить память в двумерном массиве в столбцах C++
C++ Как правильно освободить память
C++ Как освободить память после удаления объекта из вектора
C++ Как правильно освободить память после работы с динамическим массивом
Как освободить память занимаемую вектором и явно вернуть системе? C++
C++ Как правильно освободить память
Как правильно освободить память деструктором? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
17.06.2014, 07:49     Как правильно освободить память #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Nikitko_Cent Посмотреть сообщение
Как правильно освободить область памяти, на которую указывает date? За delete и delete [] получаю по рукам.
asctime uses a single, statically allocated buffer to hold the return string. Each call to this function destroys the result of the previous call.

Не нужно ничего освобождать, нужно копировать строку, если она нужна где-то дальше. Функция использует статический буфер.
Hrapvlesu
11 / 11 / 2
Регистрация: 08.06.2012
Сообщений: 28
17.06.2014, 08:00     Как правильно освободить память #3
Возвращается адрес на статический блок памяти, его не нужно освобождать.
Nikitko_Cent
131 / 101 / 8
Регистрация: 27.10.2011
Сообщений: 648
Завершенные тесты: 2
17.06.2014, 08:23  [ТС]     Как правильно освободить память #4
Аа, вот оно что.
А что тогда с указателем делать? Просто обнулить его?
0x10
2442 / 1614 / 235
Регистрация: 24.11.2012
Сообщений: 3,962
17.06.2014, 08:43     Как правильно освободить память #5
Ничего не надо делать. И в 4 строчке не нужно разыменовывать. Функция возвращает указатель - указатель и используйте.
Yandex
Объявления
17.06.2014, 08:43     Как правильно освободить память
Ответ Создать тему
Опции темы

Текущее время: 15:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru