Память _wcsdup не освобождается в C++BuilderC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Память _wcsdup не освобождается в C++Builder

Сообщение Anonymous »

У меня возникли проблемы с освобождением памяти, выделенной функцией _wcsdup() для создания указателя TObject для TComboBox. Я думал, что эта память освобождается автоматически при освобождении TComboBox или родительского TForm?
Я использую функцию TComboBox AddItem()< /code>, чтобы добавить видимый текст и значение указателя в TComboBox. Когда я выхожу из приложения, мой детектор утечки памяти сообщает, что память, выделенная с помощью _wcsdup(), не была освобождена.
Мой код приведен ниже.

Код: Выделить всё

int i=0;
UnicodeString Description;
UnicodeString Symbol;
wchar_t *MyPointerValue;

for(i=0; iCount; i++){
Description = MyStringList1->Strings[i];
Symbol      = MyStringList2->Strings[i];
MyPointerValue = _wcsdup(Symbol.c_str());

ComboBox1->AddItem(Description, (TObject *) MyPointerValue );
}
Я попробовал добавить код, if(MyPointerValue != NULL){ free(MyPointerValue); внутри моего цикла for, показанного ниже, но при этом освобождается память указателя, поэтому в TComboBox ничего не добавляется. Это решает проблему, связанную с тем, что мое программное обеспечение для утечки памяти находит несвободную память.

Код: Выделить всё

for(i=0; iCount; i++){
Description = MyStringList1->Strings[i];
Symbol      = MyStringList2->Strings[i];
MyPointerValue = _wcsdup(Symbol.c_str());

ComboBox1->AddItem(Description, (TObject *) MyPointerValue );

if(MyPointerValue != NULL){
free(MyPointerValue);
}
}
Я также попытался освободить память указателя ComboBox TObject напрямую, добавив приведенный ниже код в событие FormClose. Вызов ->Free(); генерирует ошибку.

Код: Выделить всё

for(i=ComboBox1->Items->Count-1; i>-1; i--){
if( ComboBox1->Items->Objects[i] ){
ComboBox1->Items->Objects[i]->Free();
}
}
Как я могу убедиться, что память _wcsdup() всегда освобождается?
Примечание: я использую C++ Builder 12.2, обновление 2 с платформой Win64X VCL.

Подробнее здесь: https://stackoverflow.com/questions/793 ... n-cbuilder
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»