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