gpt4 book ai didi

c++ - 在此代码中找不到内存泄漏

转载 作者:行者123 更新时间:2023-11-28 01:06:45 24 4
gpt4 key购买 nike

我已经找了 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 );

最佳答案

假设 createbitmap 分配内存,当您调用 updateBitmap() 时,您是否总是覆盖 _bitmap ? (您是否缺少任何管理 _bitmap 的声明?)

如果 _bitmap 未初始化并且您试图释放 它可能会崩溃。您可以在构造函数中将 _bitmap 初始化为 0,然后在释放它之前检查是否为 NULL。即

if(_bitmap != 0)
delete or free (_bitmap);

关于c++ - 在此代码中找不到内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5711176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com