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