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
ubuntu13.10 및 gcc4.8.1
감사