From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 42695 invoked by alias); 19 Jun 2015 20:16:15 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 42309 invoked by uid 48); 19 Jun 2015 20:16:10 -0000 From: "glisse at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/66603] using std::cout causes segfault with unrelated array declaration Date: Fri, 19 Jun 2015 20:16:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 5.1.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: glisse at gcc dot gnu.org X-Bugzilla-Status: RESOLVED X-Bugzilla-Resolution: INVALID X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2015-06/txt/msg01796.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66603 --- Comment #5 from Marc Glisse --- Another detail that might confuse you: if you write in n=4000000; int a[n]; it will probably not crash. The reason is that variables like 'int a[4000000]' exist for the whole length of the function, the memory for them is reserved at function entry, so the stream operation happens after the memory was reserved. On the other hand, a dynamic allocation (VLA) happens at the point where it is requested, i.e. after the stream op, and there is no operation afterwards to use the stack and crash the program.