__SIZE_TYPE__ newsize = 0;
__SIZE_TYPE__ delsize = 0;

struct A {
  int i;
  void * operator new [] (__SIZE_TYPE__ i)
    { newsize = i; return ::operator new [](i); }
  void operator delete [] (void *p, __SIZE_TYPE__ i)
    { delsize = i; ::operator delete [](p); }
};

int main()
{
  A* ap = new A [2];
  delete [] ap;
  if (!newsize || newsize != delsize)
    return 1;
  return 0;
}
