我一直在尋找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