Difference between malloc and new - Programmers Heaven

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Difference between malloc and new

sparczsparcz Posts: 5Member
[b][red]This message was edited by sparcz at 2006-2-6 7:5:47[/red][/b][hr]
Hi, y'all!
I read an article on joelonsoftware.com recently about how malloc actually works, and how it traverses the free chain and how this gradually becomes fragmented. FRIGHTENING!

Is it a better solution to use new(). What is the difference between malloc/free and new/delete?

Regards,
Sparcz



Comments

  • stoberstober Posts: 9,765Member ✭✭✭
    : [b][red]This message was edited by sparcz at 2006-2-6 7:5:47[/red][/b][hr]
    : Hi, y'all!
    : I read an article on joelonsoftware.com recently about how malloc actually works, and how it traverses the free chain and how this gradually becomes fragmented. FRIGHTENING!
    :
    : Is it a better solution to use new(). What is the difference between malloc/free and new/delete?
    :
    : Regards,
    : Sparcz
    :
    :
    :
    [blue]new does more than just allocate memory -- after memory is allocated (probably by calling malloc) new calls the class constructor(s) if there is one.[/blue]

    :

  • bilderbikkelbilderbikkel Posts: 754Member
    : What is the difference between malloc/free and new/delete?
    In addition to Stober:
    * [b]malloc[/b] return [b]void*[/b]. [b]new[/b] returns [b]yourClass*[/b]
    * [b]malloc[/b] explicitly needs the size of the object. [b]new[/b] doesn't.

    See ya,
    bilderbikkel

  • LundinLundin Posts: 3,711Member
    : [b][red]This message was edited by sparcz at 2006-2-6 7:5:47[/red][/b][hr]
    : Hi, y'all!
    : I read an article on joelonsoftware.com recently about how malloc actually works, and how it traverses the free chain and how this gradually becomes fragmented. FRIGHTENING!
    :
    : Is it a better solution to use new(). What is the difference between malloc/free and new/delete?
    :
    : Regards,
    : Sparcz
    :
    :


    Dynamic allocation is frightening, yes. But if the heap becomes fragmentated or not depends on the algorithm - it is compiler dependant.
  • TheNullinatorTheNullinator Posts: 31Member
    Hi Sparcz,

    [b]new[/b] has the following benefits over [b]malloc[/b]: it calls constructors on objects it allocates, even when allocating arrays of objects; it is type safe; it doesn't leak memory if the constructor of an object it is allocating throws an exception; it throws an exception (can be turned off, I believe) if it can't allocate memory so there is no need to check for NULL pointers; it can be overridden.

    [b]delete[/b] calls destructors on the objects it is deallocating.

    It's generally a good idea to use [b]new[/b] and [b]delete[/b] when programming in C++ rather than [b]malloc[/b] and [b]free[/b].

    Cheers
Sign In or Register to comment.