1 // { dg-do run }
2 
3 // Copyright (C) 2004 Free Software Foundation, Inc.
4 // Contributed by Nathan Sidwell 8 Dec 2004 <nathan@codesourcery.com>
5 
6 // PR 16681 too much memory used
7 // Origin:  Matt LaFary <lafary@activmedia.com>
8 
9 struct foo {
10   unsigned char buffer[4111222];
11   foo() ;
12   bool check () const;
13 };
14 
foo()15 foo::foo ()
16   : buffer()
17 {}
18 
check()19 bool foo::check () const
20 {
21   for (unsigned ix = sizeof (buffer); ix--;)
22     if (buffer[ix])
23       return false;
24   return true;
25 }
26 
new(__SIZE_TYPE__ size,void * p)27 void *operator new (__SIZE_TYPE__ size, void *p)
28 {
29   return p;
30 }
31 
32 char heap[5000000];
33 
main()34 int main ()
35 {
36   for (unsigned ix = sizeof (heap); ix--;)
37     heap[ix] = ix;
38 
39   foo *f = new (heap) foo ();
40 
41   if (!f->check ())
42     return 1;
43   return 0;
44 }
45 
46 
47