KOMPILACE, GCC PODRUHE
Zdenek Pizl, Czech Agriculture University, Prague
pizl na max.af.czu.cz
Čtvrtek Srpen 7 15:47:27 CEST 1997
On Thu, 31 Jul 1997, Jan Kurik wrote:
> Presne tohle mi to delalo pod Win a nekdy po DOGsem. Nakonec jsem prisel na to, ze se mi to stane pokud si alokuju kus pameti a pri pouzivani zapisu dal nez kam jsem to alokoval. Napr.:
> /***/
> char * X = (char *) malloc(10); /* Alokuju 10 Byte */
> ...
> *(X + 10) = '\0'; /* Zapisu na 11-ty Byte */
> ...
> free(X); /* Ale az tady to spadne */
> /***/
>
> Chvili mi trvalo, nez jsem na to prisel, ze to nespadne pri zapisu, ale az pri uvolneni. U Linuxu jsem zatim takovy problem nemel, ale taky pod nim programuju relativne malo. Zkuste se treba podivat, jestli nekde nezapominate na alokovani pameti o 1B vetsi, nez je delka retezce ( na znak '\0' ), coz je treba moje casta chyba :-).
>
> Jan Kurik
>
Bingo, nevim jestli jsi mi nekoukal pres rameno, kdyz jsem to mrsil, ale
naprosto presne jsi to odhadnul, ja opravdu zapisoval 11B do 10B pole
:-((( !!!! Hledal jsem to tri dny, prepsal jsem pulku objektu, a pak mne
to trklo) - no aspon jsem si zopakoval jak fungujou C++ veci pri alokaci
ukazatele na pole objektu :-)
>
===============================
" "
" "
" Zdenek Pizl (Corp. yA) "
" "
" pizl na talk.af.czu.cz "
" "
===============================
Další informace o konferenci Linux