--- "Victor A. Wagner Jr." <[EMAIL PROTECTED]> wrote: > At 03:32 2006-12-29, Nico Heinze wrote: > >--- In [email protected], "Joseph A. Marrero" > <[EMAIL PROTECTED]> > >wrote: > > > > > > Hmmm. Thats pretty interesting. On MS Windows, > malloc and > > > new internally use the same function (I can't > remember the > > > name) to allocate memory. So, I would think they > would be > > > compatible in most cases where > constructors/destructors are > > > not involved. I use malloc in legacy C libraries > that I > > > still use in my C++ projects and have not ever > noticed a > > > problem in the past. > > > > > > In short, I agree malloc should not be used in > C++ code > > > except for cases where you are explicitly using > C code > > > within a C++ project. I could be wrong... who > knows. > > > > > > --- Nico Heinze <[EMAIL PROTECTED]> wrote: > > > > > > > --- In [email protected], "Paul Herring" > > > > <pauljherring@> wrote: > > > > > > > > > > On 12/28/06, Nico Heinze <grollnar@> wrote: > > > > > > > > > > > 4) I know that many people don't trust my > words here, > > > > > > but the result of mixing new/delete with > > > > malloc/calloc/free > > > > > > is compiler and runtime specific; > sometimes it works > > > > without > > > > > > hassle, in other cases it can easily kill > your server > > > > > > applications without any chance to find > out why. > > > > > > > > > > It is perfectly Legal[tm] to have both > new/delete and > > > > > malloc/free in the same program. What is > undefined is > > > > > deleting a malloced pointer and freeing a > newed > > > > pointer. > > > > > (And incidentally, and slightly OT, is > delete[]ing a > > > > newed > > > > > pointer and deleting a new[]ed pointer) > > > > <snip> > > > > > > > > Though it is legal, I have experienced a case > where using > > > > new/delete and malloc()/free() in the same > program crashed > > > > the application. After having removed all > free() calls and > > > > re-ordered everything such that only a very > few malloc() > > > > calls took place at the beginning of the > application and > > > > afterwards only new/delete were used, > everything ran fine > > > > until I had to upgrade from Sun Forte 4.0 to > Forte 5; at > > > > that point I had to get rid of the malloc() > stuff > > > > completely, otherwise I would not have been > able to > > > > upgrade the remainder of the application. > > > > > > > > In short: even though it's legal, never rely > on malloc()/ > > > > free() and new/delete working within the same > application. > > > > It might work for your system, but it need > not. > > > >Frankly spoken I was not talking about Windows; in > fact I have > >experienced this trouble on a Solaris system two > years ago, so it may > >be that meanwhile this behaviour has been remedied. > > > >What I wanted to express is that you should not > rely on such mixes to > >work under all circumstances. > > Again I say. The standard REQUIRES it to work. If > you work with > broken compilers, I can't offer any suggestions > > >Regards, > >Nico > > Victor A. Wagner Jr. http://rudbek.com >
Victor, I am definitely NOT an expert on the standard. Are you saying the standard requires malloc() and delete to work together, and it requires new and free() to work together? Ray __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
