Professional Documents
Culture Documents
6.1 PHiddlent pamsti
Standarde enejasti poukivano fake! po pFident pam je fnkee
oe0) soi jens porate je typ unsigned int, Tent parametr wise
{et By, herd cheeme loka
Tree maioc() vist pointer as void, kerf pedstarae are pr
ho pfilendo proka. Tet pointer jell vhodné pfetyport na pointer
‘dpovidajict tp.
% eae na mnt pote si.168 10. Poi
env pamiti dost eista pro pFidlent poindovanébo dseku,
smentec() bode BULL.
Porn:
Je dobrjan 2vykem pHi latddm pidelovint pam tetova nSvrtovon
odoots a HULL» espolhat se na poi, He pam mus Bt den,
Pededeme tim tanoha pride. Ladine ttt neat programy,
' malfmn day, pro Kerépamdt vation stat, V redlagm provon bade
tle program pout pro skated daa, kerf je wtainow mole ver
1 Viomtoppadé ve erusin tara oproblemy saat
sadresyv pamati(memexy alignment), rote mBacQ) na yo pobleny
pamatue
Pras.
Uioka pout matoc() vient reakce na plipadng neispéh,
ane 9
it Cpa = Cane #) mat2ec(s000)) == mL)
princrCalo panes \e"P;
sae):
Pornfrla:
PA pfideloviny dynamicke parities oi wvidomit de sice Udine
© fideo! uritdho postu Byth, ale je jenor vee operaénto system
‘oli pamti nai we skated» heap pd. Napkin » MS-DOS o-
lj pame pote. prayrafech, co pou ndobhy 164i Byes V pes
to tey rhamend ie Side platens pe = waltoe()
© phen! jedoho jedincho Byte, system jh ve shutetnot pil 18.
Divod toto “pitvial™ pam, te ssn mun mi pro hat i
Jeng bok dynamics pares nejakowadinstrativ, aby naph vdel e
Je pri tenle koaek pam obaaen.
‘Tuto skuteinost je tba si uvédomi zeiména v programech, Aerts
‘snail pdt esi mola! Kratich Gack pam Pak pamat doje
“tive, ne kdsby program 36da pila jelnchovellsho eu
Je toxishf rsdn jako vobchodl — ten oben shal adebrany anelnot
je evn et ten objam oderan postop
Dynamic pidelovis a navracen pameti 169
(2 Uvoliiwdint pamati
‘Uvoovdntneboli asain’ pam opadaé shee ne pidalodat. Pat
‘nd anda, fe 8 nepottcbnl paral je dbré oka? weit, a neekat
ones program
Pro uvolneni pari se yyuivéfonkeitre6(), jlind parametrem je
‘rea typ void, Kerf ubazje ma 424tek dive pidendho blak
i:
Finkee tree() vei it nepotiebnon pam apt do eape, al uve
pro dal ibovlné pout illite Sle je, Be free() neminthodnoty
dbo parametru, To snamen, te pointer ste hazuje na tte? mito
‘Fpames. §tosto pai se dé tly dle pracovat, ale ve skutetnos
tu proramn reps! Tskové vyulivituvolnéné pames mide splsobit
saodst! problem,
Po piass: tree((void *) pc)
fetely vhodod uvetberprotieng i pflar: pic ® MULL;
{ina eabrinime modnéan plstyp do wolnéné pares
|B Piiklady pFidclovint paméti
sme defi:
tar #pc:
sae pai
pillar: ope = 0's
[cla korea” prottep.c laze nea do pam, kterou nemime
doom
tint harem je ey theba ust pass pic = maldoe(1):
Abychom dodtiovali dabré ney, je tes nae aii
‘vanou pamal podatlo pad, pias tedy bude:
sa se hm
Cheemeivnfsleduyfeim kooks rfpoEt alokowat 20 Byt pomod tej
Pointers pe, pak phar" ple = aalloc(20);
Viet dynamics nepeb cst tt. 1
‘Poet dived Stel mbtam atone ber tte HL,Hal 10. Pointery
rity
rent pnt nejvhodni,protake jae erat pater na dv alokoanoy
‘amit —jev ni enak "a" tato pamit sent ji ik nepodal wala
do kooce beh progeana bude snak "a “vine” eke ¥ part
Pred laddou dai ovou alec je vhodné poudle pias: tree(p-2);
ery jf neptiebuou pane wveln
este patejne oa pai oan int hd pak an
pol = malloc(2);
en opt nejvhodnd, protote je sytémontshvisly — typ it nemus! nats
‘yutivat jn 2 Byte. Lepl je plsob: p's = mtlloc(atzeet(Gnt))s
Ae ani tato variant vak nent optim, rote jane pi pied pointer,
mop
Beachy
iota je pal = Cine #) maltoe(asaeot(int));
Poutivimeli pt alokovénipameti opetor type, pak nap
sypecet int 6 _IIT;
pti
1 = (PIT) metnoc(asaeot(int));
Je naposto Koren, nao od
yt = (PLINT) nalloc(sizeot(P-281));
Protote veltost pointer na int mide bjt edi od velit datoncho typ
‘Je dled isle uvédomovat, 3 pointry neo cli ila 9 nee je
"nmi navedjem michet, eineimeniim pro dren! dob penoalnas
10.6.4 Funkee cattect)
¥ mocha piipadech je nung alokort pani po a pre, nie bd
‘ms wlio size. Pro lento prpad soul funker ealtoo(ay ze), Mere
loka toto pole pri sent jako pitas: maloe(n » size)
' navi je eye
rakee cal2ee() opét vast pointer na anéek albkorané oblast neko
HULL, nepodafill we potadovanoy pam peli,
Pose:
'V naktrjch systémech je too pam pdétenou poms eattoc()
voit pomoe funkeectran() ane fre0()!
Ab tla opavdu beac, mas by Of aaden etm pact pile!
rapatt
1 Cots vee doporaej aeimén wHatench datorich tp
Pointer jako skutetaparamet funkce wn
7 Pointer jako skuteény parametr funkce
Jebjemet ve fk mii we hoot proméané jlnoduhho
ee oles por, to soning mon Jako 10S
Sant ft nbc ror
grat plete vere 10 double Ze, lo je do pai» w
EIVBER.ESSn: Program fe ode oe pomoegeh fon! ke
0
Pra uke lie lk pat
ft, nn pa dst
ue ceutio.>
Sines eeaib>
et poiter na jo rate, nebo
bie esnse(vota)
vers ( (double) malloc(SIZE + sizeot(aoubte)) ):
Duh fonkce pete is léernice a uot je do pam, Io frm
rot je pointer ba otek slokovang blast. Hovnota toot parametry
tent (doable #p.2)
rs 0; 4c sie; 168 C
prinet ("dadejee Ya. isto 1 5.6 805
feantms", pitta; 7 ade er
‘Trt fankee pron soutinvish pitch tel tak, He we posed
se anpe! forms prarete pnoacin 4 abyijnu aly se nist. Pars
T putcacin je apracvin poe! ponleu,protote at jho hodnota bude
Werntuteznati by bylo vhodai kdyby fankee masobQ vracea typ
‘Soube jako wjsedek-nisbent, Pointer na poramete sovein je pout
pouze 1 pedagopekjch divedaa 10. Pointery
>
avn fake masa) poure wold funkcepdchow
win)
«
oubte ep.abt, ove; +
4S ((p-dtl = nit)
mu)
Jo nedortatek patti - Konse */
venta)
rasob(puabi, SIZE, asoue:
Printe(Soucin cttel Je: 112.314 \a", sone);
x
Poznimla:
* Pi volini fonkcenasob() se prvi parame p20 uv bx pote
to pointer na double, kdeit etl parametsaoxe je uveden« &, protele,
Je to proméanstypu double.
Funke’ ints ae plepet tak, aby adress alokované pam evra
sle aby wail do evo parameti,
i se(double *4p.1)
«
opt = 4
ble 4) malloc(SIZE © aizeot(Gouble)) 3;
{latin programa by byla pak vlna jako:
masa)
1 Pointer jako skutong parametrfankce ara
nce v pameti bude niles:
"Dane po voli funkce tnt)
Po vldni mantoc() se zm na
Po opuitin’ inie() se stane
(es — ent et]
a oge
ma bjt
ima be
ina ge:
‘obou pipadech «pj mist bt nékde dive alokorina pars, ted
= Cane #) maloe(eizeor (ine));
pick174 10. Pointery
a. Pitter
main) 1) dybt ainetade