How to identify the type of the object being created using the new operator?
Swati Rathi
swatirathi@cse.iitb.ac.in
Mon Oct 6 09:28:00 GMT 2014
On Monday 06 October 2014 02:28 PM, Marc Glisse wrote:
> 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)
>
Argument 20 is the size of class B.
This was obtained only if we knew that object B is created here.
Is this information not stored anywhere else?
More information about the Gcc
mailing list