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

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

Восстановить пароль Регистрация
 
Nikitko_Cent
128 / 98 / 8
Регистрация: 27.10.2011
Сообщений: 627
Завершенные тесты: 2
17.06.2014, 07:25     Как правильно освободить память #1
Написал вот такой костыль:
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++ Освободить память и записать по новой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
128 / 98 / 8
Регистрация: 27.10.2011
Сообщений: 627
Завершенные тесты: 2
17.06.2014, 08:23  [ТС]     Как правильно освободить память #4
Аа, вот оно что.
А что тогда с указателем делать? Просто обнулить его?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
17.06.2014, 08:43     Как правильно освободить память #5
Ничего не надо делать. И в 4 строчке не нужно разыменовывать. Функция возвращает указатель - указатель и используйте.
Yandex
Объявления
17.06.2014, 08:43     Как правильно освободить память
Ответ Создать тему
Опции темы

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