If I create a Pen with
hpenl = CreatePen(PS_SOLID, 0, color1);
and select that pen and then
hpenl = CreatePen(PS_SOLID, 0, color2);
and select that pen,
Can I delete a single pen or will there be a second undeleted pen out in never-never land?
Brian
Printable View
If I create a Pen with
hpenl = CreatePen(PS_SOLID, 0, color1);
and select that pen and then
hpenl = CreatePen(PS_SOLID, 0, color2);
and select that pen,
Can I delete a single pen or will there be a second undeleted pen out in never-never land?
Brian
All calls to CreatePen() need to be matched with a parallel call to DeleteObject().
Windows GDI objects are a limited resource. If you don't free an
object with a call to DeleteObject everytime you create a new
object, then you will sometime run out of resources. This will
cause problems with programs other than your own.
Allocated GDI object are not freed when the program exits. These
remain allocated until a reboot.
That means it would be a very dumb thing to do as I have done above. There would be no way to delete the first pen.
Brian
yes it would be, there are some gdi tracking tools, don't have my favorite on this machine, but I can probably post it later if you'd like, or the link to it, to breakdown the gdi allocations for your process. One of the things you should keep track of when doing unit testing blada blada...because accidents/mistakes do happen.Quote:
Originally posted by Gyannea
That means it would be a very dumb thing to do as I have done above. There would be no way to delete the first pen.
Brian
I wouldn't make the judgement call as to Dumb or not.
But, it is required that you call DeleteObject for each Create.
Failure to do so will result in the GDI resources being consumed.
This is an error that is easy to make and many do - I have before.
Suggestion:
Keep each GDI resource in a separate variable. Call DeleteObject
on each when no longer needed.
Also:
Whenever you select a new resource, be sure to keep the original
Pen/Brush/etc. and reset it back when done.
gdiobj.exe (I think gstrecken posted this tool last year) there is another one I use...but I can't remember it for the life of me right now ;)
and as cvogt61457 stated, sh*t happens, it's just being vigilante in your unit testing to make sure, it doesn't get to the QA department or out in the field...
/Zero defects is only impossible if you think it is....