Howdy, Stranger!

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

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

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.