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

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Úterý Červenec 24 17:24:22 CEST 2001


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?).

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.

--Pavel Kankovsky aka Peak  [ Boycott Microsoft--http://www.vcnet.com/bms ]
"Resistance is futile. Open your source code and prepare for assimilation."



Další informace o konferenci Linux