[Bug c++/36964] New: reintrepret_cast corrupts data / does not work as expected
shyam_77_2000 at yahoo dot com
gcc-bugzilla@gcc.gnu.org
Tue Jul 29 14:41:00 GMT 2008
Hello the following program does not work in gcc 4.1.1 compiler
//tried to analyse it and found vptr is laid out in front and so its shifting 4
bytes and data gets c
#include<iostream>
#include<stdio.h>
using namespace std;
typedef struct c
{
int a;
int b;
char bb[0];
};
class d: public c
{
public:
virtual ~d() {;}
string x;
short y;
}d1;
main()
{
c c1; // c object
c1.a=5;
c1.b=6;
d1.x="abc"; //d object
d1.y=4;
d *ptr = reinterpret_cast<d*>(&c1);
cout<<ptr->a<<endl<<ptr->b<<endl;
}
<*************************************************>
Compile
g++ test.cpp
OUTPUT:
6
-1074749676
****************************************************
wheras the expected answer is 5 and 6.
****************************************************
where is the vptr laid out in binary layout of object? and why it skips 4 bytes
always.
--
Summary: reintrepret_cast corrupts data / does not work as
expected
Product: gcc
Version: 4.1.1
Status: UNCONFIRMED
Severity: major
Priority: P3
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: shyam_77_2000 at yahoo dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36964
More information about the Gcc-bugs
mailing list