// { dg-do run } // Copyright (C) 2004 Free Software Foundation, Inc. // Contributed by Nathan Sidwell 8 Dec 2004 // PR 16681 too much memory used // Origin: Matt LaFary struct foo { unsigned char buffer[4111222]; foo() ; bool check () const; }; foo::foo () : buffer() {} bool foo::check () const { for (unsigned ix = sizeof (buffer); ix--;) if (buffer[ix]) return false; return true; } void *operator new (__SIZE_TYPE__ size, void *p) { return p; } char heap[5000000]; int main () { for (unsigned ix = sizeof (heap); ix--;) heap[ix] = ix; foo *f = new (heap) foo (); if (!f->check ()) return 1; return 0; }