what is the difference between Malloc and new operator to allocate a memory? [duplicate]
Possible Duplicate:
What is the difference between new/delete and malloc/free?
I was confused when I create an object by using new operator in C++. There must be difference between malloc and new operator that would allow me to resize the memory block. If I want to allocate a memory I use malloc but what if I use a new operator?
İsn't it allocate a memory? Can you explain that when shoul I use malloc开发者_JAVA技巧 and when should I use new ?
X* ptr = new(1,2) X;
obj = (ObjID *)malloc( sizeof(ObjID) );
thanks so much.
In C++ you should always use new
and pair it with delete
.
- It calls constructor(s) for the object(s).
- Since it is an operator, it can be overloaded.
- It throws exceptions, but there is an exceptionless version.
- There is a "placement new", which allows you to put your object in already allocated memory.
new
allocates memory and also calls the class constructor for the type you are allocating.
new
will not only allocate you memory for objects but will also call the constructor on the objects created. malloc
will just allocate you a block of memory of the given size with no guarantee of the contents.
malloc gives you raw memory with garbage bytes left around. New uses malloc internally, too. Use malloc if raw memory is all you need.
精彩评论