Re: like to know why it is segmentation fault on simple
throw-exception program
On Jun 1, 3:44 pm, Ian Collins <ian-n...@hotmail.com> wrote:
On 06/ 2/11 10:34 AM, Victor Bazarov wrote:
On 6/1/2011 6:16 PM, Ian Collins wrote:
On 06/ 2/11 10:01 AM, eric wrote:
Dear comp.lang.c++ reader or advced c++ programers:
I copied a piece of code from page 397 of book (Practical C++
programming), example22-1, stack_e1.cpp
about Throwing an Exception.
after a little modification, it successfully compile on my gnu/g++/
ubuntuLinux system
but when i run it, it response
Segmentation fault
Without digging too deep, this will get you in a whole heap of trouble=
:
const int STACK_SIZE = 100; // Maximum size of a stack
..
int data[STACK_SIZE]; // The items themselves
..
for (i=0; i< 5000; i++) {
test_stack.push(i);
How big is data? How many items do you push?
The whole point of the exercise was to catch the "exceptional" situatio=
n
in which _too much_ is pushed. I am guessing you *did* need to dig a
bit deeper (using your words). See the original post again and try
paying attention this time. :*)
OK, I dug:
inline void stack::push(const int item) throw(bound_err)
{
if ((count < 0) &&
(count >= sizeof(data)/sizeof(data[0]))) {
throw("Push overflows stack");
}
data[count] = item;
++count;
}
Nothing will be thrown since count can't be negative and >= STACK_SIZE!
And even if it did, wouldn't it call unexpected(), since it throws a
char const*
instead of a bound_err?