Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #6046
| From | Ian Collins <ian-news@hotmail.com> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | Re: like to know why it is segmentation fault on simple throw-exception program |
| Date | 2011-06-02 10:44 +1200 |
| Message-ID | <94ntlmF12lU14@mid.individual.net> (permalink) |
| References | <fca61986-de7e-40b8-80e3-0a40633a3bf1@j13g2000pro.googlegroups.com> <94ns1jF12lU13@mid.individual.net> <is6epo$kki$1@dont-email.me> |
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" situation
> 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!
>> Also using exception specifiers is generally regarded as bad practice.
>
> Really?
>
>> It will land you in all sorts of problems if something you call throws
>> some other exception type.
>
> That can be too deep for the OP. The inquiry looked very much like a
> homework (done by the OP, which is commendable), part of a C++ course,
> in which they *might* learn later that an exception specification is
> frowned upon by some c.l.c++ inhabitants.
There are some who don't frown upon them?
--
Ian Collins
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
like to know why it is segmentation fault on simple throw-exception program eric <cneric12lin0@gmail.com> - 2011-06-01 15:01 -0700
Re: like to know why it is segmentation fault on simple throw-exception program Ian Collins <ian-news@hotmail.com> - 2011-06-02 10:16 +1200
Re: like to know why it is segmentation fault on simple throw-exception program Victor Bazarov <v.bazarov@comcast.invalid> - 2011-06-01 18:34 -0400
Re: like to know why it is segmentation fault on simple throw-exception program Ian Collins <ian-news@hotmail.com> - 2011-06-02 10:44 +1200
Re: like to know why it is segmentation fault on simple throw-exception program Victor Bazarov <v.bazarov@comcast.invalid> - 2011-06-01 18:46 -0400
Re: like to know why it is segmentation fault on simple throw-exception program eric <cneric12lin0@gmail.com> - 2011-06-01 20:07 -0700
Re: like to know why it is segmentation fault on simple throw-exception program Paavo Helde <myfirstname@osa.pri.ee> - 2011-06-02 00:28 -0500
Re: like to know why it is segmentation fault on simple throw-exception program Victor Bazarov <v.bazarov@comcast.invalid> - 2011-06-02 07:59 -0400
Re: like to know why it is segmentation fault on simple throw-exception program red floyd <redfloyd@gmail.com> - 2011-06-02 11:20 -0700
Re: like to know why it is segmentation fault on simple throw-exception program Victor Bazarov <v.bazarov@comcast.invalid> - 2011-06-01 18:44 -0400
csiph-web