Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737

Освобождение памяти LocalFree

31.10.2015, 22:37. Показов 2023. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
LocalFree освобождает выделенную память, попытка освободить память по указателю, когда он указывает на константу, звершается неудачей, но программа работает. Есть ли вероятность что в будующем на других машинах программа может упасть?
В профессиональных кругах является ли такой код приемлемым?


C++
1
2
3
4
5
6
7
8
9
10
11
12
    wchar_t* str;
    if(...)
    {        
        str = L"No description";
    }
    else
    {
        FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER, ..., (wchar_t*)&str, ...);
    }
    std::wcout << str << std::endl;
 
    LocalFree((void*)str);
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.10.2015, 22:37
Ответы с готовыми решениями:

Резервирование памяти/освобождение памяти для трехмерного массива
Необходимо создать трехмерный массив (A), в котором элементы вдоль направления Z выли бы выровнены по 16 байт. Есть две проблемы: ...

Освобождение памяти
Как сделать, чтобы при вызове деструктора экземпляра i класса image, вызвался и деструктор класса image_bmp? class image { public:...

Освобождение памяти
#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int main() { int i, k; float SO, S, B, R, C1, P, umn, length, height,...

3
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
01.11.2015, 00:10
Хулиган, см. описание LocalFree
Цитата Сообщение от Хулиган Посмотреть сообщение
LocalFree освобождает выделенную память
Поэтому не нужно освобождать память, которая не была выделена.
0
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
01.11.2015, 00:17  [ТС]
Цитата Сообщение от Alex5 Посмотреть сообщение
Поэтому не нужно освобождать память, которая не была выделена.
Я это понимаю, просто для уменьшения количества строк так написал, вот и спрашиваю может оно уронить программу или нет?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
01.11.2015, 11:57
Попытка вызвать LocalFree на указателе, который не указывает на выделенную память,
очень сомнительна. Если это экономия, то даже не на спичках, а на головках от спичках.
Даже если сейчас этот код не падает, то не факт, что так будет и дальше, все может
резко поменяться на другой версии/редакции/разрядности/SP/update/compat-shim и т.д.

Ну и во-вторых, если FormatMessage завершится с ошибкой, в str так и останется мусор...

Можно использовать такой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
wstring Str;
if (...)
{
    Str = "No description";
}
else
{
    wchar_t * pStr;
    if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER, ..., (wchar_t *)&pStr, ...))
    {
        Str = pStr;
        LocalFree(pStr);
    }
}
std::wcout << Str << std::endl;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.11.2015, 11:57
Помогаю со студенческими работами здесь

Освобождение памяти
Собственно есть простенький класс class Human { public: Human ( ); void ptintHuman(); private: static long...

Освобождение памяти
Похоже что проблема с освобождением памяти. У меня есть абстрактный класс CObject и его потомок CMeteor, в котором реализованы...

освобождение памяти
Помогите найти ошибку, программа вилиться когда освобождаю память! Здесь выделения памяти double **CreateArray() { double...

Освобождение памяти в Qt
Представим ситуацию: я написал программу, в которой все потомки соединены с предками через setParent. Соответственно, при удалении виджета...

Освобождение памяти
//--------------------------------------------------------------------------- #ifndef Lariphm_H #define Lariphm_H /* *...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru