Describe the “placement new" and why would i use it?, C/C++ Programming

Assignment Help:

Describe the “placement new" and why would I use it?


Related Discussions:- Describe the “placement new" and why would i use it?

Develop custom mql4 code, Develop Custom Mql4 Code/Fxdreema block Projec...

Develop Custom Mql4 Code/Fxdreema block Project Description: I need the subsequent code written in mql4 and integrated as custom block(s) in fxdreema: for each trade: C

Error handling and constructor, Provide me the answer, Can a constructor th...

Provide me the answer, Can a constructor throws an exception? How to handle the error when the constructor fails?

Pseudo code, determining whether an integer is prime number or not

determining whether an integer is prime number or not

Area, write a program to find the area under the curve y=f(x) between x=a &...

write a program to find the area under the curve y=f(x) between x=a & x=b

Develop capturing printer output apps using raspberry, In POS system, cashi...

In POS system, cashier computer connect to printer using serial rs232 usb or cable. We need to capture data from that connection, and parsing the data to get total amount for every

Luminous jewels, Luminous Jewels - The Polishing Game Byteland county is v...

Luminous Jewels - The Polishing Game Byteland county is very famous for luminous jewels. Luminous jewels are used in making beautiful necklaces. A necklace consists of various lum

Main program to test the basic operations, The Main program is slightly mor...

The Main program is slightly more complicated and you need to think about the I/O process. First of all, for most applications you do not call the low level routines GetChar and P

Define local classes, A cl a s s c a n b e d e f i n e ...

A cl a s s c a n b e d e f i n e d i n s i d e a b l o c k o r f u n c t i o n.   T h i s t yp e cla s s i s known

How do i develop a subscript operator for a matrix class?, Employ operator ...

Employ operator () instead of operator[]. While you have multiple subscripts, the cleanest way to do it is along with operator () instead of with operator[]. The reason is that

Source code on home stay, I am doing project on home stay which includes fe...

I am doing project on home stay which includes features like add homestay,search,book,delete homestay,

3/15/2013 5:37:27 AM

A: There are several uses of placement new. The simplest use is to place an object at a specific location in memory. It is done by supplying the place as a pointer parameter to the new part of a new expression:

#include // Must #include this to use "placement new"

#include "Fred.h" // Declaration of class Fred

void someCode()

{

char memory[sizeof(Fred)]; // Line #1 void* place = memory; // Line #2

Fred* f = new(place) Fred(); // Line #3 (see "DANGER" below)

// The pointers f & place will be equal

...

}

Line #1 creates an array of sizeof(Fred) bytes of memory, that is adequate to hold a Fred object. Line #2 creates a pointer place which points to the first byte of this memory (experienced C programmers will note  down that this step was needless; it''s there just to make the code more obvious). Line #3 in essence just calls the constructor Fred::Fred(). The this pointer in the Fred constructor will be equal to place. Therefore the returned pointer f will be equal to place.

ADVICE: Don''t use this "placement new" syntax if not you have to. Use it only while you really care that an object is placed at a specific location in memory. For instance, while your hardware has a memory-mapped I/O timer device, and you wished to place a Clock object at that memory location.

DANGER: You are taking solitary job that the pointer you pass to the "placement new" operator points to a region of memory which is sufficient and is appropriately aligned for the object type which you''re creating. Neither the compiler nor run-time system makes any effort to check whether you did this right. If your Fred class requires to be aligned on a 4 byte boundary however you supplied a location which isn''t properly aligned, you can have serious disaster on your hands You have been warned. You are also exclusively responsible for destructing the placed object. It is done by explicitly calling the destructor:

void someCode()

{

char memory[sizeof(Fred)];

void* p = memory; Fred* f = new(p) Fred();

...

f->~Fred(); // Explicitly call the destructor for the placed object

}

It is about the only time you ever explicitly call a destructor.

Note: there is a much apparent but more sophisticated way of handling the destruction / deletion situation.

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd