Why use malloc / free when we have a new / delete?

What use malloc, and freewhen we have new, and deletein C ++. I assume that as the function freeand deletethe same.

+5
source share
3 answers

They are not the same. newcalls the constructor, mallocjust allocates memory.

In addition, this undefined behavior mixes the two (i.e., using newc freeand mallocc delete).

In C ++, you must use newboth delete, mallocand freefor compatibility with C.

+8
source

++ malloc free new & delete.

, :

, , , malloc free new delete.

, , malloc new !
:

  • new callng , malloc , memset post a malloc , - .

  • , new NULL , , malloc.

+5

-, new delete, , , operator new operator delete. new delete malloc free, ; : new operator new , ; a delete operator delete . , , .

, (); , std::vector, , , . operator new new ; (- p->~T()) operator delete .

, , malloc free ++. - ::operator new ::operator delete. ( ::operator new ::operator delete , , ..) - C: malloc ( , free) , malloc, , malloc free. (The better libraries will provide their own distribution and release functions that do more or less what the operators newand delete do, but there will always be such things as strdup().)

+3
source

All Articles