How to identify the type of the object being created using the new operator?

Marc Glisse marc.glisse@inria.fr
Mon Oct 6 08:59:00 GMT 2014


On Mon, 6 Oct 2014, Swati Rathi wrote:

> Statement : A *a = new B;
>
> gets translated in GIMPLE as
> 1. void * D.2805;
> 2. struct A * a;
> 3. D.2805 = operator new (20);
> 4. a = D.2805;
>
> A is the base class and B is the derived class.
> In statement 3, new operator is creating an object of derived class B.
> By analyzing the RHS of the assignment statement 3, how can we identify the 
> type (in this case B) of the object being created?

I strongly doubt you can. It is calling B's constructor that will turn 
this memory region into a B, operator new is the same as malloc, it 
only returns raw memory.

(If A and B don't have the same size, the argument 20 can be a hint)

-- 
Marc Glisse



More information about the Gcc mailing list