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
9struct foo {
10  unsigned char buffer[4111222];
11  foo() ;
12  bool check () const;
13};
14
15foo::foo ()
16  : buffer()
17{}
18
19bool foo::check () const
20{
21  for (unsigned ix = sizeof (buffer); ix--;)
22    if (buffer[ix])
23      return false;
24  return true;
25}
26
27void *operator new (__SIZE_TYPE__ size, void *p)
28{
29  return p;
30}
31
32char heap[5000000];
33
34int 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