Author: Eugene Nalimov
Date: 21:59:38 12/28/98
Go up one level in this thread
On December 28, 1998 at 23:53:52, KarinsDad wrote: >On December 28, 1998 at 22:23:58, Robert Hyatt wrote: > >> >> >>I don't follow any of this. IE in crafty, I "malloc()" the hash tables, I >>do _not_ free() them before I exit(0) the program. And the memory gets freed >>up under windows just as it does under linux. Yes I can create a thread and >>so long as a thread "lives" its resources remain allocated. But I don't know >>of commercial chess programs that create threads so don't see where this is a >>problem. >> >>this "object" discussion loses me. An object (in C++) is not a permanent thing >>that exists 'on its own'... it is simply a data structure that comes into being >>when you access an object constructor, and disappears when you access the >>destructor... but when the program terminates, the objects disappear along >>with it... > >Robert, > >You're absolutely correct. That is how it is supposed to all happen (in theory). >And memory allocation and creation of your own objects where those objects are >autonomous (i.e. do not make calls to other external resources such as a >service) does work like that (a service could fail, for example, if it had it's >own memory leak and since it is still in memory, it could hog resources, but >this is a totally different thing). However, there have been (mostly in the >past) instances when calling API calls such as some of the MFC calls where some >other resources do not get recovered (I believe WinSockets had the problem at >one time). Microsoft fixes these problems when they are reported and puts the >fixes into their next service packs. However, this post started due to someone >reporting a resource leak in a chess program which did not get cleaned up by >Windows 95, hence, the possibility that other chess applications (engines, >databases, or training programs) could have found one or more of these rare >leaks that one or more of the OSs misses was possible. > >I did some of my owning testing on Windows NT 4.0 (with service pack 4) today >and could not reproduce a memory leak that did not get cleaned up by the OS when >the application exited (I tried "losing" about a dozen different types of MFC >objects and also a new()). I'm sure that there are some obscure ones still out >there, but for the most part, this issue is probably moot at this point unless >someone finds something on one of the earlier OSs. > >KarinsDad Once again: most likely source of the problems is multi-threading. Under Windows (and OS/2) you almost *forced* to have at least one GUI thread (it must be able to process dialogue events at unpredictable moments), and one or several working threads. Usual bug is that programmer forgets to terminate all threads, and program not terminates at all. Eugene
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.