Article View: pl.comp.lang.c
Article #954Re: malloc czy (type *)malloc?
From: Michal Malecki
Date: Mon, 02 Feb 1998 13:19
Date: Mon, 02 Feb 1998 13:19
51 lines
2786 bytes
2786 bytes
milosz danielewski <mdaniel@priv.onet.pl> wrote:
: On 29 Jan 1998 19:19:16 GMT, Michal Malecki <sektor@zly.kis.p.lodz.pl>
: wrote:
:>Wyjatki powinny byc wyjatkowe. W malych programach nie ma potrzeby z nich
:>korzystac. Ale dobrym pomyslem jest np. przetlumaczenie sygnalow na wyjatki.
:>Co prawda mechanizm sygnalow jest troche inny, niz wyjatkow, przede wszystkim
:>dlatego, ze handler sygnalu po zakonczeniu wraca do miejsca, z ktorego zostala
:>przerwana funkcja wywolujac handler. Natomiast wyjatek przerywa biezaca
:>funkcje i juz jej nie kontynuuje (dalej :). Nie przeszkadza to jednaj, bo
:>wyjatki ulegaja propagacji.
: Co wspominane tu wyjatki maja wspolnego z wyjatkami zglaszanymi
: sprzetowo ( np. przy dzieleniu przez zero ) ? Z wczesniejszej dyskusji
: wnioskuje, ze nie chodzi o to samo...
Nic. Wyjatki zglaszane sprzetowo - jak to nazwales - maja rozna implementacje
na roznnych systemach. Ja akurat mowilem o UNIX'ie i zglaszanych przez niego
sygnalach. Sygnaly da sie "przetlumaczyc na wyjatki" w nastepujacy sposob:
void caught_SIGFPE( int )
{
signal( SIGFPE, caught_SIGFPE );
throw ExFPE();
}
... gdzie ExFPE jest specjalnie stworzona klasa na potrzeby zglaszania
wyjatkow. Oczywiscie nalezy na poczatku funkji main zarejestrowac owa
funkcje od razu piszac wywolanie jakie jest w pierszej linijce ciala funkcji.
W tej funkcji nalezy zarejestrowac ja ponownie, gdyz po zgloszeniu sygnalu
owa rejestracja jest anulowana.
Jezeli teraz zrobimy:
try
{
a = x/0;
}
catch( ExFPE )
{
cout << "Dzielenie przez zero!\n";
}
to wyjatek ExFPE zostanie zgloszony w tej linijce, gdzie sie dzieli przez zero.
Pozdrawiam,
--
.---. . . - Michal Malecki <mmalecki@technologist.com>/The things that
\___ ,-. | , |- ,-. ,- mUd: zly.mud.org.pl 4000. /can't destroy you
\ |-' |< | | | | uRl: www.kis.p.lodz.pl/~sektor /make you
`---' `-' ' ` `' `-' ' pGp: sektor@zly.kis.p.lodz.pl /stronger...
Technical Details
Message-ID:
<6b4h50$477@polonez.man.lodz.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!ict.pwr.wroc.pl!news.man.lodz.pl!not-for-mailReferences:
<34CCAF18.4877@imm.org.pl> <6ak737$hru$1@helios.man.lublin.pl> <01bd2b0e$c612cfa0$89baccc2@karpierz.dyn.ml.org> <6alcq4$7u6@polonez.man.lodz.pl> <01bd2b80$36ada5c0$84baccc2@karpierz.dyn.ml.org> <6aqknk$p7k@polonez.man.lodz.pl> <34d11d65.955539@news.icm.edu.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!ict.pwr.wroc.pl!news.man.lodz.pl!not-for-mail From: Michal Malecki <sektor@zly.kis.p.lodz.pl> Newsgroups: pl.comp.lang.c Subject: Re: malloc czy (type *)malloc? Date: 2 Feb 1998 13:19:28 GMT Lines: 51 Message-ID: <6b4h50$477@polonez.man.lodz.pl> References: <34CCAF18.4877@imm.org.pl> <6ak737$hru$1@helios.man.lublin.pl> <01bd2b0e$c612cfa0$89baccc2@karpierz.dyn.ml.org> <6alcq4$7u6@polonez.man.lodz.pl> <01bd2b80$36ada5c0$84baccc2@karpierz.dyn.ml.org> <6aqknk$p7k@polonez.man.lodz.pl> <34d11d65.955539@news.icm.edu.pl> NNTP-Posting-Host: sektor@zly.kis.p.lodz.pl User-Agent: tin/pre-1.4-980105 (UNIX) (SunOS/5.5.1 (i86pc)) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit