0
class A
{
public:
static void * operator new (size_t,void *p)
{
return p;
}
int i;
};
int main()
{
void *p = malloc(sizeof(A));
cout<<p<<endl;
A *a= new (p) A;
a->i = 10;
cout<<a<<endl;
cout<<a->i<<endl;
a->i = 100;
cout<<a->i<<endl;
}
输出:奇怪放置新的行为
0x1e0e010
0x1e0e010
10
100
但我运营商新的代码更改
static void * operator new (size_t,void *p)
{
return p+1024;
}
它不会崩溃,其输出是:
0x25c4010
0x25c4410
10
100
I现在用ubuntu13.10和gcc4.8.1
感谢