delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2001/10/31/07:49:24

From: "Tim Van Holder" <notme AT spamproofemail DOT com>
Subject: Re: ostringstream / not enough memory
Date: Wed, 31 Oct 2001 13:28:39 +0100
Newsgroups: gnu.g++.help,gnu.gcc.help,comp.os.msdos.djgpp
Message-ID: <pan.2001.10.31.13.28.35.881.26631@spamproofemail.com>
References: <9rong5$i1m$1 AT news DOT itfs DOT nsk DOT su>
User-Agent: Pan/0.10.0 (Unix)
Mime-Version: 1.0
X-Comment-To: "Michael N. Filippov" <michael AT idisys DOT iae DOT nsk DOT su>
X-No-Productlinks: Yes
Lines: 26
Organization: -= Skynet Usenet Service =-
NNTP-Posting-Host: 194.78.64.238
X-Trace: 1004531470 reader1.news.skynet.be 36459 194.78.64.238
X-Complaints-To: abuse AT skynet DOT be
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

> int main(void)
> {
>   char* buffer(0);
>   const size_t buffer_length(1 * 1000 * 1000);

I find it very odd style to use constructor syntax for non-object types.
What's wrong with 'const size_t buffer_length = 1 * 1000 * 1000'?

>   [snip]
>   delete buffer;

should be delete[]

> I see that if there is not enough memory string just stops growing. BTW
> - same code with my previous configuration (GCC 2.95.2, same <sstream>)
> caused SIGABRT from throw_helper (it couldn't find exception handler I
> suppose)
> 
> I would expect that in this example/ code should throw bad_alloc (like
> if using not ostringstream. but just std::string of std::vector).

If it does run out of memory, it should probably throw, yes.
It would have helped to see the program's output though; you may also
want to print the values of oss's badbit and failbit; it might be that
all it is required to do by the standard is set failbit on overflow
(don't have a copy of the standard handy right now).

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019