⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 array16.c

📁 linux下编程用 编译软件
💻 C
字号:
// Causes timeout for the MMIX simulator on a 3GHz P4 and we can't// have "compile" for some targets and "run" for others.// { dg-do run { target { ! mmix-*-* } } }// { dg-options "-mstructure-size-boundary=8" { target arm-*-* } }// Copyright (C) 2004 Free Software Foundation, Inc.// Contributed by Nathan Sidwell 8 Dec 2004 <nathan@codesourcery.com>// PR 16681 too much memory used// Origin:  Matt LaFary <lafary@activmedia.com>// NOTE: This test assumes that 4M instances of struct ELT can fit into//       a 5MB array.  This isn't true, e.g., with the default//       arm-none-elf options.struct elt {  static int count;  static elt*ptr;  static int abort;  char c;    elt ();  ~elt ();  };int elt::count;elt *elt::ptr;int elt::abort;elt::elt ()  :c (){  if (count >= 0)    {      if (!ptr)	ptr = this;      if (count == 100)	throw 2;      if (this != ptr)	abort = 1;      count++;      ptr++;    }}elt::~elt (){  if (count >= 0)    {      ptr--;      count--;      if (ptr != this)	abort = 2;    }}struct foo {  elt buffer[4111222];  foo() ;  bool check () const;};foo::foo ()  : buffer(){}bool foo::check () const{  for (unsigned ix = sizeof (buffer)/ sizeof (buffer[0]); ix--;)    if (buffer[ix].c)      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;  try    {      foo *f = new (heap) foo ();      return 1;    }  catch (...)    {      if (elt::count)	return 2;      if (elt::abort)	return elt::abort + 3;    }  for (unsigned ix = sizeof (heap); ix--;)    heap[ix] = ix;  elt::count = -1;  foo *f = new (heap) foo ();  if (!f->check ())    return 3;  return 0;}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -