Free mem...

5 отговора 256 прегледа
#1

Free mem...

Kak moga da osvobodq pamet zaeta ot nesto si, ako imam ukazatel kym nacaloto na tazi pamet.(imam predvid grubia metod bez da me interesuva dali nesto ste uvisne i t.n. --- Vazmozno li e po tozi nacin). Problema e, ce polzvam OCX kontrola, v kojato ima greshka i iztica pamet. Az namerih kade se gubi, no ne moga da ja osvoboda...:-) Pametta triabva da se osvobozdava nezavisimo s kakvo(kakva function) e bila zadelena - prosto ia obiaviavame za svobodna...
Blagodara predvaritelno.

Отговор
в отговор на C++ #2

Re: Free mem...

tova vuobshte njama da e reshenie na problema - naj-dobre nameri koj leakwa.

Ako wsichki moduli/app izpolzwaha samo edin edinstwen memory manager, i edin edinstwen heap (ako e heapov memory manager) - to sigurno bi rabotilo - no realno ako poglednesh - mozhe da ima memory manager w memory manager-a.

Ako e prosto GlobalFree - mozhe i da stane, no ako razchita na neshto drugo... riskovano

To err is human
To stderr is inhuman
Отговор
в отговор на C++ #3

Re: Free mem...

drug primer:

ako pametta e zaeta ot masiv ot C++ clasove s destruktor - to obiknoweno pri alokiraneto (no pak zawisi ot realizazicata) - masiva ima otprede cookie socheshto nomera na elementite w masiva. Ako iskash da triesh direktno - to ne se znae -> delete ili delete [] da se wika -> poslednoto prosto obhozhda element po element i wika destruktorite za wseki element.

To err is human
To stderr is inhuman
Отговор
в отговор на malkia #4

Re: Free mem...

това за cookieто сигурен ли си? защото аз си мисля че го правят с началото + i*sizeof(type).
абе мисля си че ако беше вътрешен алок, то нямаше да има изтичане, защото щеше при изход да освободи целия си хийп. така че е вероятно да стане със просто освобождаване на указателя.

Отговор
в отговор на zaphod #5

Re: Free mem...

za cookieto - prosto njakoi kompilatori (w zawisimost ot platformata) taka go pravjat. No ne e unificirano mezhdu wsichki (wsushnost te se opitwat sus poslednoto ABI).

To err is human
To stderr is inhuman
Отговор
в отговор на zaphod #6

Re: Free mem...

"защото щеше при изход да освободи целия си хийп" --> точно това става - при изход от програмата се освобождава цялата изтекла памет о всичко е ОК.Ама това не върши работа.

Отговор