Re: Heap fragmentation due to LoadImage function.
By memory fragmentation, I exactly meant what you have said. There are
indeed blocks of memory which are not usable.
The code snippet that I had included, was only a test program. In the actual
application I have a situation where in I load around 200
bitmaps of various sizes, use throughout the application lifetime and
release only at the application exit.
When I load them using LoadImage with LR_CREATEDIBSECTION flag set, I see a
lot of heap fragmentation.
So the fragmented block of memory is rendered useless.
"Joseph M. Newcomer" <newcomer@flounder.com> wrote in message
news:pafor3hlqiid756ju0gt0rg99jaigakbhs@4ax.com...
Well, you need to define what *you* mean by "memory fragmentation".
Usually this means
that there are small, unusable blocks of memory left in the heap. Given
your code below,
which simply loads a bitmap, AND DOES NOTHING TO DISCARD IT, you should
EXPECT to see 1000
memory fragments. Had you done something that freed the bitmap, such as
HBITMAP bmp = (HBITMAP)::LoadImage(...);
::DeleteObject(bmp);
and then you see the same phenomenon, there might be something worth
discussing. Given
you have not released the bitmap, your expectation should be that you will
get a lot of
chunks of memory allocated, *which is not the same as memory
fragmentation*.
joe
On Wed, 20 Feb 2008 14:55:47 +0530, "Raghavendra Naik"
<someone@microsoft.com> wrote:
Hi,
I have an application where I am loading a large number of bitmaps using
LoadImage function.
When I did a memory profiling of the application I observed that there
was
lot of memory fragmentation due to this API.
Following is the test code snippet-
for(int i =0; i<1000; ++i)
{
::LoadImage(NULL,"Something.bmp" ,
IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION );
}
Another observation was that fragmentation happened only when I gave the
last parameter as LR_CREATEDIBSECTION. Without this flag there was no
fragmentation.
Is it a known issue with LoadImage or am I missing something.
Thanks in advance,
Raghav.
Joseph M. Newcomer [MVP]
email: newcomer@flounder.com
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm