Solved

ExitThread memory leaks?

Posted on 2001-08-27
5
1,205 Views
Last Modified: 2013-12-03
I was looking up CreateThread in my Win32 documentation when I noticed a little paragraph at the bottom:

"A thread that uses functions from the C run-time libraries should use the beginthread and endthread C run-time functions for thread management rather than CreateThread and ExitThread. Failure to do so results in small memory leaks when ExitThread is called."

Is this true? The "For example, see Creating Threads" link on the page leads to an example program that uses wsprintf in the thread. Kind of hypocritical.

If it's true, then does it mean that I have to implement copies of the CRT functions that I use?
0
Comment
Question by:TookH
  • 3
  • 2
5 Comments
 
LVL 15

Accepted Solution

by:
NickRepin earned 100 total points
ID: 6430979
>>Is this true?

Yes

wsprintf() is a Windows API function, and not C run-time function, you mixed it up with sprintf() etc.

>>then does it mean that I have to implement copies of the CRT functions that I use?

Not at all, to create a thread use C run-time functions _beginthread() and _beginthread()
0
 
LVL 15

Expert Comment

by:NickRepin
ID: 6430988
I meant to say _beginthread() and _beginthreadex(). The latter one is almost the same as CreateThread() with regard to the parameters.

The difference is that you can use any C function inside the thread. To terminate the "C" thread simply return or call _endthread() or _endthreadex().
0
 
LVL 1

Author Comment

by:TookH
ID: 6432563
I find this really disturbing! I've seen so many sample programs that use CreateThread and CRT functions. Does MFC's thread class use CreateThread or beginthread? How significant are the leaks?
0
 
LVL 15

Expert Comment

by:NickRepin
ID: 6435434
>>Does MFC's thread class use CreateThread or beginthread?
Sure, beginthread. See "C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC\THRDCORE.CPP"

>>How significant are the leaks?
Well, it is not disturbing at all to call beginthread instead of CreateThread. beginthread initializes some thread-related memory; with CreateThread some of RTL functions might work incorrectly or not work at all.
0
 
LVL 1

Author Comment

by:TookH
ID: 6435574
I suppose I should just get used to using beginthread, then. It makes me angry, though. What is the point of putting a function in a library if it causes bugs in 90% of the programs it's used in?

Are there events, critical sections, ect. for use with beginthread?
0

Featured Post

Announcing the Most Valuable Experts of 2016

MVEs are more concerned with the satisfaction of those they help than with the considerable points they can earn. They are the types of people you feel privileged to call colleagues. Join us in honoring this amazing group of Experts.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

This article shows how to make a Windows 7 gadget that extends its U/I with a flyout panel -- a window that pops out next to the gadget.  The example gadget shows several additional techniques:  How to automatically resize a gadget or flyout panel t…
What my article will show is if you ever had to do processing to a listbox without being able to just select all the items in it. My software Visual Studio 2008 crystal report v11 My issue was I wanted to add crystal report to a form and show…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question