Home C C++ Java Python Perl PHP SQL JavaScript Linux Selenium QT Online Test

Home » C++ » Difference between new & malloc

What is the difference between C++ new and C malloc

malloc and new both are used to allocate memory from heap but there are many difference between them -

C++ NewC Malloc
  • 1. Memory allocated from 'Free Store'
  • 2. Returns a fully typed pointer
  • 3. new (standard version) never returns a
    NULL(will throw on failure)
  • 4. Are called with Type-ID (compiler calculates the size)
  • 5. Has a version explicitly to handle arrays
  • 6. Reallocating (to get more space) not handled intuitively (because of copy constructor)
  • 7. Whether they call malloc/free is implementation defined
  • 8. Can add a new memory allocator to deal with low memory (set_new_handler)
  • 9. Operator new/delete can be overridden legally
  • 10. constructor/destructor used to initialize/destroy the object
  • 1. Memory allocated from 'Heap'
  • 2. Returns a void*
  • 3. Returns NULL on failure
  • 4. Must specify the size required in bytes
  • 5. Allocating array requires manual calculation of space.
  • 6. Reallocating larger chunk of memory simple (No copy constructor to worry about)
  • 7. They will NOT call new/delete
  • 8. No way to splice user code into the allocation sequence to help with low memory
  • 9. malloc/free can NOT be overridden legally