[FreeBSD] memoria - regi gimp-gond

Nohl Attila Rajmund Attila.Nohl at eth.ericsson.se
2001. Jan. 24., Sze, 10:22:50 CET


On Tue, 23 Jan 2001, Aries wrote:
[...]
> >
> > Szívemből szóltál!  Nézzük már meg a security hole-okat mostanában, hát
> > nem kis százalékuk buffer overflow-jellegű.  De nem csak securityről van
>
> Security szempontjabol nem ertem miert baj az, ha az ember folyamatosan
> figyeli, hogy mit mekkorarra foglal le, es asszerint kalkulal. Arra viszont
> felhivnam a figyelmet, hogy a string osztaly minden kolke 20k-t zabal...
> En inkabb maradok az strcpy-nel :)

A string osztalynak ot darab adatmezoje van, es nincs virtualis
fuggvenye. Ez azt jelenti, hogy az ot adatmezot (harom size_t, egy bool
es egy pointer) kell minden peldanyban tarolni (plusz valahol a pointer
altal mutatott stringet), a fuggvenyeket eleg egyszer. Ez messze nem
20k. Es mukodik widechar-okra is. Es sokkal jobb azt irni, hogy

s=s1+s2;

mint azt, hogy

s=(char*)malloc(strlen(s1)+strlen(s2)+1);
if (s==NULL) {
	fprintf(stderr,"Elfogyott a memoria!\n");
	exit(1);
	}
strcpy(s,s1);
strcpy(s+strlen(s1),s2);

> > szó: ha egyszerűen ott van egy hiba, az már baj.  Operator overloadinggal
> > könnyedén elkészítheted C++-ban a saját operátoridat, csak egy példa:
> >
> >    mytype x,y;     //"mytype" legyen mondjuk egy diszkrimináns
>
> De ne ragadjunk le a C++-nal. Ott a Java, ott nincs operator-overloading :)

Viszont van az Eiffel-ben (uj operatorokat is definialhatsz), van az
ADA-ban,...

> > És szépen elkészíted a megfelelő rutinokat, hogy a típusod "transzparens"
> > módon végezze el a saját értékének meghatározását, stb.
> >
> > Vagy pl mondhatsz ilyet:
> >
> >    x=y*6;
>
> De ez mar csak csicsa, Windoz :) Nem ertem, miert rosszabb, ha
> x=times(y,6)-ot irok. Szamomra atlathatobb is, mert tudom, hogy
> epp most milyen fuggvenyt hasznalok -> debugolasnal nem gabalyodok
> bele abba, hogy mit hol merre definialtam felul.

Es ha azt kene irni, hogy sqrt(b*b-4*a*c)? Biztos, hogy jobb az
sqrt(minus(times(b,b),times(4,times(a,c)...megfelelo szamu zarojel...)
(lattal mar LISP programot? :-)

				Bye,NAR
-- 
"Beware of bugs in the above code; I have only proved it correct, not
 tried it."




További információk a(z) BSD levelezőlistáról