Re: g++ uses infinite memory with unusual 'new' statement

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Paul Dubuc <pdubuc@xxxxxxx> writes:

> This bug is simlar to #11282 in the GCC Bugzilla database, but It may
> have a different cause.  The following program causes g++ 3.3 to loop
> (with no error or warning messages) using up all virtual memory.

This is a bug. I think you should file a bug report. Link to #11282 in
    your report, and then it will be easy for the gcc developers to
    determine if it is a duplicate, but I do not think it is; the code
    you give below is AFAIK well-defined.

> 
> int
> main()
> {
>      int i = 16;
>      char* heap_area = new char [i]();
> }
> 
> Is line 5 valid C++ with the parens?  I've never see new called this
> way, but it compiled fine with g++ 2.95.3.  If the parens are valid,
> what do they mean?

They mean the array of char is default-initialized. See
    5.3.4/15, second bullet.

> 
> With g++ 3.2.3 I get the following error:
> 
>    z.cc: In function `int main()':
>    z.cc:5: variable-sized object of type `char[i]' may not be initialized
> 
> With 3.3 the code compiles fine when the parens are removed from line
> 5 or if a literal constant is used in place of 'i'.
[snip]


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux