Может быть кто-нибудь сталкивался с такой неприятностью,
буду очень благодарен за добрый совет.
это упрощённый кусок кода потока, загружающего фотографии в различные компаненты приложения
TPicture *Picture = new TPicture();
Picture->RegisterFileFormat(__classid(TJPEGImage), "jpg", "jpg",__classid(TJPEGImage));
while(!Terminated)
{
QueueIn->NotEmpty->WaitFor(1000);
if(QueueIn->Size <= 0)
continue;
TFotoLoaderItemIn *InItem = QueueIn->Pop(); // если очередь не пуста, достаем из неё запрос на загрузку фотки
Picture->LoadFromFile(InItem->Path); // грузим фотку
TFotoLoaderItemOut *OutItem = new TFotoLoaderItemOut(InItem->Width, InItem->Height); //создаём элемент для исходящей очереди,
//содержащий екземпляр Graphics::TBitmap
//(создаваемый в конструкторе TFotoLoaderItemOut,
// там же задаются его размеры)
/* !!! */OutItem->Bitmap->Canvas->StretchDraw(OutItem->Bitmap->Canvas->ClipRect, Picture->Graphic);
//Вот тут то вся и проблема!
//Не знаю почему, но использование этого метода приводит к катострофической утечке памяти!
//То же самое, но с методом Draw никаких проблем не вызывает
QueueOut->Push(OutItem); // помещаем в исходящую очередь
SendMessage(InItem->ParentHandle, FMessageNum, 0, 0); //и шлём сообщение заказчику, о том, что запрос выполнен
delete InItem;
}
Здравствуйте, MaxxSPIC, Вы писали:
MSP>буду очень благодарен за добрый совет.
Первый совет: когда постишь в этот форум простыни кода, используй теги форматирования. Это существенно повышает шансф твоего сообщения на прочтение.
... << RSDN@Home 1.1.4 beta 1 >>
Здравствуйте, Sinclair, Вы писали:
Первый совет: когда постишь в этот форум простыни кода, используй теги форматирования. Это существенно повышает шансф твоего сообщения на прочтение.
Да конечно, спасибо.