[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