我一直在寻找2个多小时,事实证明我的内存泄露来自本节,只有我无法确定是什么导致泄漏。顺便说一句,我使用Allegro5,但做了一些包装。在此代码中找不到内存泄漏
void WidgetLabel::updateBitmap(Display* display)
{
Size textSize = getTextSize(_font, _text.c_str());
_bitmap = createBitmap(textSize.getWidth(), textSize.getHeight(), display);
startDrawingToBitmap(_bitmap);
drawText(_font, _color, Point(0,0), _text.c_str());
stopDrawingToBitmap(_bitmap, display);
}
编辑:我想我可能需要删除_bitmap创建一个新的前释放的空间,但是应用程序一直这样做,所以当崩溃。我猜测这是因为Allegro如何管理内存。使用Allegro,你必须这样做:
al_destroy_bitmap(ALLEGRO_BITMAP* bitmap);
你是否100%确定这是泄漏?尝试暂时评论它,看看它是否真的是泄漏。 – Kaslai 2011-04-19 03:17:22
你对'_bitmap'泄漏的直觉对我来说似乎是正确的。 – msandiford 2011-04-19 03:19:00