OT: C++ - jak zjistit zda nebyla uvolnena pamet pred destruovanimobjektu?

Libor Chocholaty chocholaty na gncz.cz
Úterý Červenec 24 18:17:57 CEST 2001


Pavel Kankovsky wrote:

> On Tue, 24 Jul 2001, Libor Chocholaty wrote:
>
> > nevite, jak zjistit, ze ukazatek ukazuje na jiz uvolnenou pamet? Mam
> > problem s destruovanim jiz desruovanych objektu.
>
> Pokud tim minite, ze chcete v programu za chodu zjistovat, jestli je
> ukazatel jeste zivy, nebo uz ne a nejak podle toho ridit beh, pak na to
> radsi zapomente (jak se ma resit situace, kdy mam ukazatele, ktery
> ukazoval na objekt A, ktery byl mezitim zrusen a nahrazen na stejnem
> miste objektem B?).
>

No to je prave to, co nevim.

>
> Pokud tim minite, za tam mate takovou chybu, kterou nemuzete z nejakeho
> duvodu najit (coz je neobvykle, protoze free() cili i delete volane na
> misto, kde neni zadny alokovany blok, temer jiste zhavaruje), tak to se
> treba pri linkovani na konec pripise -lefence a uz to je. Jenom musite mit
> dost virtualni pameti (program, co normalne zabira treba 5 MB se muze
> nafouknout i na 100 MB)...a musite mit ten Electric Fence nainstalovany
> (a musite mit system, kde EF funguje, ale to asi mate, kdyz se ptate
> v linuxove konferenci, ne?). Navic je EF ta trochu kanon na vrabce, v
> tomto pripade by postacovaly mene brutalni ladici nastroje -- po pravde
> receno je stejne vetsinou nejlepsi se chybu pokusit najit ocima.
>

Vase oci bych potreboval. Nechcete se stavit? Muzu vam oskenovat strukturu
objektu, ktera se vytvari a co se tam priblizne deje, vy prijdete a najdete
to. Jo? :-) Jestli byste to nasel, asi bych sel delat hrobnika.

Zkusim to EF. Myslim, ze to nebude kanon na vrabce. To, co jsem si s tim uzil,
zasluhuje kanon nejmene 380mm.

S pozdravem, Libor Chocholaty




Další informace o konferenci Linux