🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #954

Re: malloc czy (type *)malloc?

#954
From: Michal Malecki
Date: Mon, 02 Feb 1998 13:19
51 lines
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-mail
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>

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