[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: memory debugging and C++ (program keeps crashing)



On Sun, Sep 29, 2002 at 08:41:22AM -0500, Graham Wilson wrote:
> On Sun, Sep 29, 2002 at 02:54:19PM +0200, Russell Coker wrote:
> > On Sun, 29 Sep 2002 14:40, Jon Dowland wrote:
> > > On Sun, Sep 29, 2002 at 04:25:41PM +1000, Brian May wrote:
> > > > List *list = [...orbit call...]
> > > > for (each item in list) {
> > > >   Value &value = list[x];
> > > >   save(&value);
> > > > }
> > > > free(list)
> > >
> > > Forgive me if I'm missing the point, but shouldn't you be using
> > > new/delete if you are writing in C++? Since they are language
> > > constructs rather than functions, I imagine it would be much
> > > harder for a memory debugger to keep track of however.
> [...]
> > Also if you allocate memory that some C code will free or if you want to free 
> > code that was (or might have been) allocated by C code then you need to use 
> > malloc/free in your C++ program.
> 
> i think that is what is happening in this code snippet. the orbit (a C
> library) call is allocating something, thus free is necessary to
> unallocate it.

Actually, with GCC it doesn't matter which call you use.  New uses the
malloc function.  You can free () or delete memory allocated with
malloc () or new.  New and delete are 'syntactic sugar' for malloc and
free.




Reply to: