Re: operator new (iNumBytes) vs std::malloc(iNumBytes)
On May 10, 2:12 pm, Andrew Tomazos <and...@tomazos.com> wrote:
Given:
void f(void* p) { ... }
and assuming the operator new has not been overloaded, what
are the concrete differences in behaviour of:
void* p = operator new(iNumBytes);
f(p);
vs
void* p = std:malloc(iNumBytes);
f(p);
That are visible by f?
The main one is that in the first, p must be freed by ::operator
delete, and in the second, by std::free.
For example is one reallocable and the other not?
I'm not sure what you mean "reallocable". If you want to use
std::realloc, only memory allocated by the second is eligible.
Does one consider alignment restrictions that the other does
not?
No.
Are there other differences?
Just that they're two different functions, which may (or may
not) draw memory from a different arena.
Under g++ and vc++ are the operator new(bytes) and std::malloc
implemented with the same function?
I don't know off hand, but many ::operator new do, in fact, call
malloc to obtain their memory. (The reverse is not allowed.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34