Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > try to maka a program run out of memory

Reply
Thread Tools

try to maka a program run out of memory

 
 
Tony Johansson
Guest
Posts: n/a
 
      04-04-2005
Hello experts!!

I have written a small program that I hope will run out of memory(just for
testing) because i have deliberately removed the delete of the allocated
memory but it will not run out of memory.
So my question is can you see why not this program will run out of memory.
It consist of three files these are start.cpp,test.h and slask.h

// Here is the file containing the main funtion called start.cpp
#include "test.h"
main()
{
Test testobj;
for (long i =0; i<999999999; i++)
testobj.foo();
}

//Here is file test.h containing the class definition of class Test
#include "slask.h"
class Test
{
public:
void foo()
{ s = new Slask(); }
private:
Slask* s;
};

//Here is the last file named slask.h containg the class definition of class
Slask.
class Slask
{
public:
private:
char namn1[1000];
char namn2[1000];
};

Many thanks
//Tony


 
Reply With Quote
 
 
 
 
marbac
Guest
Posts: n/a
 
      04-04-2005
Tony Johansson wrote:

> I have written a small program that I hope will run out of memory(just for
> testing) because i have deliberately removed the delete of the allocated
> memory but it will not run out of memory.
> So my question is can you see why not this program will run out of memory.
> It consist of three files these are start.cpp,test.h and slask.h
>


Hi,

i can only talk about the linux behaviour of this program:

it runs out of memory if you have no swap-memory. I ran the program and
my harddisk got very busy, that means that the system uses the swap-area
on the harddisk to allocate new items. I didn`t look what happens if the
system is out of swap ... could take hours

regards marbac





 
Reply With Quote
 
 
 
 
Malte Starostik
Guest
Posts: n/a
 
      04-04-2005
Tony Johansson schrieb:
> Hello experts!!
>
> I have written a small program that I hope will run out of memory(just for
> testing) because i have deliberately removed the delete of the allocated
> memory but it will not run out of memory.
> So my question is can you see why not this program will run out of memory.
> It consist of three files these are start.cpp,test.h and slask.h


One possibility might be your impatience
I added a try...catch around your loop in main and got a std::bad_alloc
exception as expected...it took this box (Athlon XP 2400+, 256MB, WinXP)
some 15 minutes to get there though. Meanwhile I could see the C++
library's (mingw) exponential allocator at work: at first the program
almost immediately hogged 256MB, then 512MB, 1GB where it became really
slow due to swapping and new allocations were again decreasing in size
(by a factor of 0.5) which makes sense when you take into account that
there is an absolute maximum of 2GB of per process memory on this
platform, which is exactly what the program had allocated when the
exception was thrown.
If your platform doesn't have such a "low" limit, it could take a lot
longer run out of memory. To speed things up, you could deactivate any
swap...another one would be to drastically increase Slask's size or
simply alloc blocks of a GB or so if you want to force an OOM condition.

Another possibility is that you're using an old compiler that doesn't
throw std::bad_alloc but returns a null pointer when the allocation
fails. Did you check that? Given that your compiler accepted the below
error (implicit int is not part of Standard C++), maybe it has other
non-conforming behaviour too...

> // Here is the file containing the main funtion called start.cpp
> #include "test.h"
> main()

int main()

> {
> Test testobj;
> for (long i =0; i<999999999; i++)
> testobj.foo();
> }


Cheers,
Malte
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to exit out of a function ? what is try-catch-throw in terms of Program Counter gnuist006@gmail.com C++ 34 12-02-2007 11:51 PM
How to exit out of a function ? what is try-catch-throw in terms of Program Counter gnuist006@gmail.com C Programming 35 12-02-2007 11:51 PM
What a mistaka to maka (humourous) GraB NZ Computing 3 12-22-2005 09:26 PM
Can I have a second TRY inside the first TRY/CATCH in ASP.NET ??? bienwell ASP .Net 4 05-27-2005 05:05 PM
Try, Try, Try, again... Rick12N4@netscape.net Computer Support 3 01-29-2005 04:02 PM



Advertisments